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