Προς το περιεχόμενο

C Προβλημα με δυναμικη διχειριση μνημης.


antonis1245

Προτεινόμενες αναρτήσεις

Ναι, και μεις για τους δείκτες ως διευθύνσεις μιλάμε. Φαντάσου όσοι γράφουν εδώ για C να ήξεραν από C και να μπορούν να καταλάβουν αυτά που καταλαβαίνεις εσύ ως αρχάριος και μερικά παραπάνω. Χαμός θα γινόταν!

 

Anyway το πρόγραμμα που "δουλεύει" (δεν το έτρεξα), δεν "δουλεύει" παρα μόνο κατα τύχη από τη στιγμή που κάνεις πράγματα μέσα που επισήμως είναι UB.

 

Αυτό που λέει ο ημίθεος το σκέφτονται βασικά και όλοι οι υπόλοιποι που σε διαβάζουν, απλά δεν το λένε πάντα γιατί δυστυχώς δε φαίνεται να έχει νόημα. Αν αυτή η πληροφορία σου είναι χρήσιμη έχει καλώς, αν όχι, πάλι καλώς, κανείς δεν έχει όρεξη για ανούσιες εντάσεις.

  • Like 5
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 142
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Κοίτα ίσως η έκφρασή μου να είναι λάθος! Αλλά δες το πρόγραμμα. Όταν κάνω realloc μπορεί να πάρω μια αντιγραφή του string σε μια άλλη διεύθυνση και την διαφορά της νέας από την παλιά την βάζω ως offset στους δείκτες που χρησιμοποιώ μέσα στο αλφαριθμητικό, ώστε να δείχνουν στο σωστό σημείο. Άρα όπως έγραψες και εσύ παίρνω τη διαφορά και μετά την προσθέτω (μπορεί να είναι αρνητική δεν ξέρω). Αυτό που όμως δεν ήξερα ήταν ότι μπορεί το realloc να δώσει την ίδια διεύθυνση!

Δεν ξέρω πως γενικεύεις με το "το σκέφτονται όλοι"!

Ποιοι είναι οι όλοι; Γνωρίζεις τους "όλους"; Μήπως αναφέρεσαι σε αυτούς που συζητούν εδώ;

Εγώ θα σου πω ξεκάθαρα ότι όποιος έχει καβαλήσει το καλάμι συνήθως σκέφτεται να μιλήσει μήπως και καταλάβει ότι δεν υπάρχει καλάμι! Ενώ αυτός που γράφει μπορεί να εκτίθεται αλλά το κάνει εν γνώση του, όχι γιατί είναι μαζόχας, αλλά γιατί ξέρει να μοιράζεται τις σκέψεις του και να αναγνωρίζει και τα λάθη του!

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κοίτα ίσως η έκφρασή μου να είναι λάθος! Αλλά δες το πρόγραμμα. Όταν κάνω realloc μπορεί να πάρω μια αντιγραφή του string σε μια άλλη διεύθυνση και την διαφορά της νέας από την παλιά την βάζω ως offset στους δείκτες που χρησιμοποιώ μέσα στο αλφαριθμητικό, ώστε να δείχνουν στο σωστό σημείο. Άρα όπως έγραψες και εσύ παίρνω τη διαφορά και μετά την προσθέτω (μπορεί να είναι αρνητική δεν ξέρω). Αυτό που όμως δεν ήξερα ήταν ότι μπορεί το realloc να δώσει την ίδια διεύθυνση!

Αυτό που κάνεις και παίρνεις τη διαφορά δεν επιτρέπεται σύμφωνα με το πρότυπο. Δε μπορώ να το πω απλούστερα. Από τη στιγμή που δεν επιτρέπεται το πρόγραμμα είναι λάθος. Το τι και πως και γιατί είναι μια ολόκληρη συζήτηση που πραγματικά κανείς δεν έχει διάθεση να κάνει με κάποιον που έμαθε C χθες.

 

Δεν ξέρω πως γενικεύεις με το "το σκέφτονται όλοι"!

Ποιοι είναι οι όλοι; Γνωρίζεις τους "όλους"; Μήπως αναφέρεσαι σε αυτούς που συζητούν εδώ;

Είμαι σ' αυτή τη γειτονιά χρόνια. Εσύ ήρθες προχθές. Να μπω στον κόπο να σου εξηγήσω πώς και γιατί καταλαβαίνω πράγματα για τους γείτονες που δεν καταλαβαίνεις εσύ;

 

Ενώ αυτός που γράφει μπορεί να εκτίθεται αλλά το κάνει εν γνώση του, όχι γιατί είναι μαζόχας, αλλά γιατί ξέρει να μοιράζεται τις σκέψεις του και να αναγνωρίζει και τα λάθη του!

Άμα όποιος άνοιγε το στόμα του ήξερε να μοιράζεται σκέψεις και να αναγνωρίζει λάθη θα ζούσαμε στον παράδεισο.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ενώ έχεις διάθεση να συζητάς με τον θεματοθέτη εδώ, επειδή δεν έμαθε χθες C;

Ωραίος είσαι!

Ναι σ' αυτό έχεις δίκιο, δεν είπα όλη την αλήθεια.

 

Ο θεματοθέτης λοιπόν έχει το θετικό κατ' εμένα χαρακτηριστικό ότι μέχρι στιγμής στα θέματα για τα οποία δε γνωρίζει ακούει πολύ και μιλάει λίγο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τέλος πάντων αυτές οι "διαφορές" παραπέμπουν σε σχολικές αυλές, και κάτι τέτοιο δεν με τιμά. Όποιος έχει να δείξει κάτι...να το κάνει με κώδικα!

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τέλος πάντων αυτές οι "διαφορές" παραπέμπουν σε σχολικές αυλές, και κάτι τέτοιο δεν με τιμά. Όποιος έχει να δείξει κάτι...να το κάνει με κώδικα!

 

Ενώ οι μπουρδολογίες για θέματα που δεν ξέρεις σε τιμούν ..κάθισες πάλι έγραψες σεντόνια που δεν προσφέρουν απολύτως τίποτα στον ts ( κλασικά έγραψες και στην απίστευτη m2000  όπως σε κάθε θέμα για να το κατανοήσουμε )  ούτε σε κάποιον που θα διαβάσει το θέμα στο μέλλον .

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Είπαμε θα μιλάμε με "κώδικα"...

Όποιος θέλει ιδού πεδίον λαμπρόν...συμμετοχή με κώδικα όχι με λόγια!

 

Δεν ξέρω αν έχει νόημα να σου πω ότι αυτές τις ατάκες μας παίρνει να τις λέμε μόνο αφότου έχουμε κερδίσει το σεβασμό των συνομιλητών ενώ εσύ εδώ στο φόρουμ... έχεις κάνει (και συνεχίζεις να κάνεις) κάτι άλλο;

 

Νομίζω ότι ζω ξανά τις επικές εποχές Δελαπόρτα! Συγγενής μήπως; Umbrella rings a bell?

 

ΛΟΛ άδικο χτύπημα αλλά ομολογώ πολύ πετυχημένο για όποιον έχει το context.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πόσο καιρό έχω να αγγίξω C. Με το που την άγγιξα  (για να κάνω debug το παράδειγμα) εκτίμισα τις functions της php όπως var_dump και console.log() της javascript.

 

που θα πάει δεν θα βρεθεί ο κακος ζουζούνος....... Αλλά αμα τον βρω και τον πατήσω πως τον λέω στον άλλον οεο;

 

Προς το παρόν φίλτατε @antonis1245 βλέπω πως ο κώδικας εισαγωγής μιας λέξης (είτε Ελληνικής είτε Αγγλικής) είναι πάνω κάτο ο ίδιος έτσι για να γίνεται και η ζωή σου ποιο εύκολη θα μπορούσες να τον βάλεις σε μια function.

 

Και γενικά σαν ένα tip κώδικας που κάνεις copy paste και μετά του αλλάζεις 2-3 σημεία μόνο κάντον καλύτερα μια function και εάν το χρησιμοποιείς σε αρκετά σημεία καλύτερα να γίνει και library. Πιστεψε με το βήμα αυτό σε γλιτώνει απο ΠΟΛΥ ΚΟΠΟ στο debugging και γενικά να το έχεις σαν κανόνα εάν θες να ασχοληθείς ποιο σοβαρα με τον προγραμματισμό. (aka. σαν DRY τεχνική)

 

Ακόμη για κάποιον λόγο στον εν λόγο κώδικα στην function mem_alloc έχεις:

En[*w_count] = (char*)malloc(s_size*sizeof(char));

Ενώ ξανακάνεις malloc στην else από κάτω. Γιατί δεν κάνεις μια φορα malloc.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

λολ, μόνο στο ινσόμνια καταλήγει ένα θέμα για κώδικα στο ποιος είναι ο πιο παλιός, ο πιο ANSI C compatible και ο op μένει με το bug στο χέρι.

Φίλε πόσταρε το σε κανένα stackoverflow να δεις φως, διαφορετικά ακόμα και για ένα hello word θα πάρεις για απάντηση ενα paper εξειδικευμένης μπουρδολογίας.

 

υ.γ. δεν ασχολούμαι πια με C, οπότε μαζέψτε τα κόμπλεξ σας όσοι σκεφτείτε να απαντήσετε στο που είναι "ο κώδικας μου" κτλ

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κάτι είναι αυτό! Αλλά η λογική πρέπει να έχει και άλλα πράγματα όπως π.χ. πώς γίνεται να ΜΗΝ γράψει την ίδια λέξη δυο φορές!

Τότε φίλε πάμε σε hash table.

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

λολ, μόνο στο ινσόμνια καταλήγει ένα θέμα για κώδικα στο ποιος είναι ο πιο παλιός, ο πιο ANSI C compatible και ο op μένει με το bug στο χέρι.

 

Φίλε πόσταρε το σε κανένα stackoverflow να δεις φως, διαφορετικά ακόμα και για ένα hello word θα πάρεις για απάντηση ενα paper εξειδικευμένης μπουρδολογίας.

 

υ.γ. δεν ασχολούμαι πια με C, οπότε μαζέψτε τα κόμπλεξ σας όσοι σκεφτείτε να απαντήσετε στο που είναι "ο κώδικας μου" κτλ

Θα είχες δίκαιο αν όντως δε δόθηκε η απάντηση στο πρόβλημα. Τώρα μόνο εκτείθεσαι.

 

Επίσης, το καλό εδώ είναι ότι συζητιούναι και άλλα πράγματα. Δίνονται συμβουλές για το πως θα μπορούσε να το βελτιώσει (δες απάντηση imitheos) και να βελτιώσει τον τρόπο που διαχειρίζεται κάποιες καταστάσεις (πχ το string input). Στο SO απλά θα έπαιρνε την απάντηση.

 

Βέβαια forum είναι, "θόρυβος" θα υπάρχει και θα συνεχίσει αν κρίνω από το λόγο που απάντησες εδώ. Θα μπορούσες να του στείλεις pm.

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επισκέπτης
Αυτό το θέμα είναι πλέον κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...