Miren, tengo un problema que le vengo dando vueltas hace bastante y no se como hacer para resolverlo.
Declaré un puntero tipo unsigned long, y lo pasé a una función. En esa función, utilizando el operador new, cree un array de unsigned longs y los llené de ceros con ZeroMemory.
Luego trabajé con dicho puntero, ahora, cuando quiero utilizar el array inicial (utilizando el puntero), no me deja, parece como si la memoria jamás hubiese sido allocada.
Este es el código en cuestión:
Código
int main() { unsigned long *Arg1= 0, *Arg2= 0; Precalc(24,20, Arg1, Arg2); cout << (int) Arg1<< endl << (int) Arg1<< endl; return 0; } void Precalc(unsigned int inbits, unsigned int outbits, unsigned long *Arg1, unsigned long *Arg2) { unsigned long iSpace = pow(2, inbits); unsigned long ideSpace = pow(2, outbits); unsigned long nModulus = pow(2, inbits); Arg1= new unsigned long[iSpace]; Arg2= new unsigned long[ideSpace]; if(!Arg1|| !Arg2) return; ZeroMemory(Arg1, iSpace*4); ZeroMemory(Arg2, ideSpace*4); //Más código donde se modifican los arrays Arg1 y Arg2 }
Esto devuelve "0" y "0". Si trato de trabajar con los arrays afuera de las funciones, me da un error de segmentación (Null pointer).
Alguien sabe que sucede??
Muchas gracias!
APOKLIPTICO