/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Et spørgsmål om auto ptr
Fra : Esben Mose Hansen


Dato : 28-08-02 20:25

Hej,

i en implementation jeg bruger på arbejde resulterer nedenstående til
tider i en segmentation fault (skrevet af efter hukommelsen):

#include <memory>
#include <string>
using namespace std;
auto_ptr<string> getNext() {
auto_ptr<string> rv(new string("Test"));
return rv;
}
int main(int argc, char* argv[]) {
auto_ptr<string> ptr(new string("Esben"));

// seg fault (i operator=, så vidt jeg kan se)
ptr = getNext();
// ej seg fault
ptr.reset(getNext().release());

return 0;
}

Er dette en bug i compileren/STL-librariet? Nogen bud?

På forhånd 1000 tak


--
mvh. Esben
home.worldonline.dk/~mesben


 
 
Ivan Johansen (28-08-2002)
Kommentar
Fra : Ivan Johansen


Dato : 28-08-02 20:43

Esben Mose Hansen wrote:

> Hej,
>
> i en implementation jeg bruger på arbejde resulterer nedenstående til
> tider i en segmentation fault (skrevet af efter hukommelsen):


[snip code]


> Er dette en bug i compileren/STL-librariet? Nogen bud?

Jeg kan ikke se at der skulle være noget i vejen med din kode. Jeg får
ingen fejl, når jeg kører det under Borland C++ Builder 6. I stedet for
at skrive af efter hukommelsen, så bør du sikre dig den kode du har vist
giver segmentation fault, så problemet ikke ligger et andet sted. Men
det er ikke utænkeligt at der er en fejl i din implementation af STL.
Hvilken compiler bruger du?

Ivan Johansen


Esben Mose Hansen (28-08-2002)
Kommentar
Fra : Esben Mose Hansen


Dato : 28-08-02 21:52

Ivan Johansen wrote:
> Esben Mose Hansen wrote:
>
>> Hej,
>>
>> i en implementation jeg bruger på arbejde resulterer nedenstående til
>> tider i en segmentation fault (skrevet af efter hukommelsen):
>
>
>
> [snip code]
>
>> Er dette en bug i compileren/STL-librariet? Nogen bud?
>
>
> Jeg kan ikke se at der skulle være noget i vejen med din kode. Jeg får
> ingen fejl, når jeg kører det under Borland C++ Builder 6. I stedet for
> at skrive af efter hukommelsen, så bør du sikre dig den kode du har vist
> giver segmentation fault, så problemet ikke ligger et andet sted. Men

Jeg har den desværre ikke lige ved hånden, men jeg skal prøve at sende
den hjem til min 'puter derhjemme og poste den i morgen. Har dog skrevet
20 varianter over temaet, og de lavede alle segmentationfault (omend
ikke ved hver kørsel)

> det er ikke utænkeligt at der er en fejl i din implementation af STL.
> Hvilken compiler bruger du?

Ja det er jo det. Det Z/OS C++ rel 1.2 compileren... jeg /tror/ den
kommer fra Visual Age for C++ og er portet til Z/OS (tidl. OS390).

Jeg ville egentligt bare høre om jeg har overset noget tåbeligt... inden
jeg blamere mig for dem der skriver compileren

--
mvh. Esben
home.worldonline.dk/~mesben


Mogens Hansen (29-08-2002)
Kommentar
Fra : Mogens Hansen


Dato : 29-08-02 05:43


"Esben Mose Hansen" <esben@SLETMIGoek.dk> wrote in message
news:3d6d3746$0$183$edfadb0f@dspool01.news.tele.dk...

> Jeg ville egentligt bare høre om jeg har overset noget tåbeligt... inden
> jeg blamere mig for dem der skriver compileren

Hvis det eksempel du postede, ikke kører korrekt, så kan du roligt sende en
fejlrapport til compiler leverandøren .

ptr = getNext();
er defineret til at være det samme som
ptr.reset(getNext().release());
i C++ Standarden §20.4.5.1-8

Har du adgang til kildekoden til auto_ptr ?
Hvis du har så prøv lige at inspicer copy-constructor og
assignment-operator, og se om der er noget åbenlyst galt. Så har du
muligheden at rette fejlen direkte.


Venlig hilsen

Mogens Hansen





Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408509
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste