C++ SIGSEGV

N Kanellopoulos nkangr at yahoo.gr
Wed Sep 11 10:31:00 EEST 2002


> Κανόνας 1 του προγραμματισμού: Κάποια βλακεία
> κάνεις.
Στατιστικά, με 98% πιθανότητα.
 
> Μια από αυτές (προφανώς άσχετη με το file.open())
> είναι ότι δεν έχεις
> κάνει malloc()/new κάποιο μέρος μνήμης για το str[].
>  Ακόμα και με
> "\n" στο filename δεν μπόρεσα να αναπαράγω το `bug':

Γιώργο στο παράδειγμά σου, δεν χρειάζεται malloc/new
γιατί δουλεύεις με array που έχει γίνει allocated στο
stack και έχει επιμεριστεί χώρος αυτόματα.
Tο είχα δοκιμάσει και εγώ και δουλεύει μια χαρά, αλλά
είχα ξεχάσει να εξασφαλίσω μνήμη για το δικό μου str
που ήταν char*. Βάραγε λοιπόν η getline, και λογικά.
Η open όμως δούλευε κανονικα.

> > ifstream myfile;
> > myfile.open (path, ios::in);
Εδώ όμως, αυτό που δουλεύει στο ένα αρχείο, δεν
δουλεύει στο άλλο. O κώδικας αυτός δούλευε χωρίς
πρόβλημα με Visual C++ 6. Αυτό δεν είναι καμία τρομερή
απόδειξη βέβαια, αλλά έχω μείνει από ιδέες. Αφού το
path δεν έχει πρόβλημα, τι άλλο μπορεί να επηρεάσει
την κλήση της open() ;;

--
Νίκος Κανελλόπουλος
www.hinmaira.net

____________________________________________________________
Do You Yahoo!?
Αποκτήστε τη δωρεάν @yahoo.gr διεύθυνση σας στο http://www.otenet.gr



More information about the Linux-greek-users mailing list