PDA

Visualizza la versione completa : [C++]problema in allocazione dinamica memoria


ciamprix
20-05-2008, 12:55
Ciao a tutti,
il mio problema è il seguente ho una struct:
typedef struct
{
double ascissa, ordinata;
}tipopunto;

un array:
tipopunto *arr[N];

alloco un blocco di struct:
arr =(malloc(N * sizeof(tipopunto));

e mi dava il seguente errore:
incompatible types in assignment of `void*' to `tipopunto*[4]'

giustamente il MALLOC ritorna un puntatore ad un VOID e allora ho fatto nel seguente modo:
arr =(struct *)malloc(N * sizeof(tipopunto));

però adesso mi da:
expected primary-expression before "struct"

Quale è il mio errore...?Grazie mille a tutti!!!

shodan
20-05-2008, 13:16
Stai cercando di modificare l'indirizzo immodificabile di un array.

Devi fare così:
In C



for (i=0;i<N;i++)
arr[i] = (struct tipodato*) malloc (sizeof(tipodato));


for (i=0;i<N;i++)
free(arr[i]);



in C++



for (i=0;i<N;i++)
arr[i] = new tipodato;


for (i=0;i<N;i++)
delete arr[i];

ciamprix
20-05-2008, 13:29
grazie mille!!!
vero!!!

MacApp
20-05-2008, 15:11
Ok definirsi un tipo complesso per esercizio, ma sul campo ti consiglio una roba del tipo:



#include <complex>
#include <iostream>

typedef std::complex <double> tipopunto;

int main (){
tipopunto aPoint (1, 2);
std::cout << aPoint << std::endl;
return 0;
}


poi ovvio, in C++, come ti ha detto Shodan, usa new.

Loading