Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di fausto
    Registrato dal
    Jun 2002
    Messaggi
    294

    C] allocazione sovrascrivente??

    Ciao a tutti.
    Mi succede veramnte una csa strana.
    Nel mio programma alloco dinamicamente una matrice. La matrice e' grande, 160 per 160.
    Ebben, durante i processo di allocamento, viene cambiato erroneamente il valore di una variabile
    globale! viene arbitrsarimente messa od un valore vicino allo zero. La cosa curiosa e' che non e' possibille che la causa sia diversa: uso quella variabile solo in due punti, ... ed in mezzo c'e' solo l'allocazione.
    Io non sono un esperto programmatore, magari ho detto delle fesserie. ma se sono noti errori del genere, vi prego di segnalarmi come e' possibile evitarli.

    Grazie a tutti.
    se volete vi posto il codice, ma sono un sacco di righe, magari vi rompete...
    laptop asus L5800C
    slackware 11.0 kernel 2.6.17

  2. #2
    Ciao,
    potresti postare la parte di codice che da il problema e non tutto (cioè l'intorno di dove avviene il cambiamento della variabile globale) ? Con allocazione intendi una new, una malloc, una definizione di variabile o cos'altro? normalmente se viene cambiato il valore di un'altra variabile è perchè hai sforato l'accesso alla memoria allocata.



  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: C] allocazione sovrascrivente??

    Originariamente inviato da fausto
    Ciao a tutti.
    Mi succede veramnte una csa strana.
    Nel mio programma alloco dinamicamente una matrice. La matrice e' grande, 160 per 160.
    Ebben, durante i processo di allocamento, viene cambiato erroneamente il valore di una variabile
    globale! viene arbitrsarimente messa od un valore vicino allo zero. La cosa curiosa e' che non e' possibille che la causa sia diversa: uso quella variabile solo in due punti, ... ed in mezzo c'e' solo l'allocazione.
    Io non sono un esperto programmatore, magari ho detto delle fesserie. ma se sono noti errori del genere, vi prego di segnalarmi come e' possibile evitarli.

    Grazie a tutti.
    se volete vi posto il codice, ma sono un sacco di righe, magari vi rompete...
    L'allocazione di memoria (con malloc e simili) non va mai certamente a "sovrascrivere" altre aree di memoria già allocate.

    Presumo (ma è solo una ipotesi al momento) che la tua allocazione non sia corretta. Cioè che magari hai specificato male la dimensione del blocco di memoria da allocare e quindi successivamente accedendo a quella zona vai a "sforare" fuori dal blocco. Ma potrebbe essere anche un problema concettuale ... se dici 160 per 160 presumo che sia una matrice bidimensionale ma bisogna stare attenti a come è gestita. Intanto cosa contiene?? interi, double???

    Magari (e per fugare ogni mio/tuo dubbio) posta il codice, ma solo il pezzo di codice dove fai la allocazione. Spiega anche in modo più preciso che tipo di array è e come vuoi accederci.
    Solo allora potrò dirti di più.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di fausto
    Registrato dal
    Jun 2002
    Messaggi
    294
    Ragazzi,

    a distanza di qualche mese, vi ringrazio.
    L'errore lo trovai, ed era infatti errata l'allocazione che facevo.
    Si vede che mi sono dimenticato di iscrivermi alla discussione e che non ricevendo la mail, ho pensato che nessuno mi avesse risposto.
    Ho ritrovato questo post perche' sto studiando il c++ ed ovviamente avevo bisogno di una matrice dinamica...
    e di fatti mi sa che fra poco apro un altro post su questo.

    Ciao,

    laptop asus L5800C
    slackware 11.0 kernel 2.6.17

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.