chybna alokace pameti
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Sobota Prosinec 10 15:56:00 CET 2005
On Thu, 8 Dec 2005, Jan Eisner wrote:
> alokuji nejprve nekolik matic odkazu na double pomoci
>
> double **aM;
> double **aF;
> double **aPM;
> double **aPF;
> double **aSM;
> double **aSF;
> double **aSFM;
>
> ...a pak (kraceno) postupne mallocuji pomoci
>
> if (verbose = 1)
> { printf("Alokuji aM \n"); }
> alokujDD = (aM = (double **) malloc(SideLength*sizeof(double *)));
> if (alokujDD == NULL) [...]
> alokujD = (aM[i] = (double *) malloc(SideLength*sizeof(double)));
> if (alokujD == NULL) [...]
A takhle alokujete vsech 7 poli? Cili mate to tam sedmkrat opsane
s ruznymi jmeny promennych? Pokud ano, tak jste pekny spagetovy
programator a vsadil bych se, ze tenhle problem:
> SideLength=10
>
> Kontroluji pole
> 0x83841e0
> 0x8384580
> 0x8384920
> 0x2d353030
> 0x8385060
> 0x706f70
> 0x83857a0
Je zpusoben tim, ze jste v nekterem pripade zapomnel pri alokaci velikost
pole vynasobit sizeof(double) (nebo sizeof(double *)).
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux