Programación General > C/C++
Stack overflow
antotejas:
Hola a todos,
Estoy realizando un programa en el que necesito leer datos de un fichero de text ,guardarlos en un array(para organizar la informacion) y luego procesarlos.
el problema es que al declarar el array,que lo quiero hacer de tamaño fijo y del tipo elemento:
element list[1000];
Solo me deja declararlo de este tamaño,si lo intento hacer de mas me sale el error de stach overflow:
Unhandled exception at 0x00402a47 in clustering1.exe: 0xC00000FD: Stack overflow.
¿Hay alguna solucion para este problema?
Gracias!!
m0skit0:
Prueba a hacerlo con malloc(). Así te reservará espacio en el montículo y no en la pila ;)
--- Código: C ---element list[];list = malloc(sizeof(element) * 1000);
antotejas:
Pero si lo hago como tu dices me toca cambiar todo el programa para ponerlo todo con punteros??
struct element //record for senders
{
char date[10];//The date of the transfer
int amountOfMoney;//the amount of money send
char senderName[500];//the sender name
char receiverName[500];// the receiver name
};
element list[1000];
Asi es como yo lo tengo,el caso es que necesitaria un array de aproximadamenete 3000 posiciones
diego.martinez:
no, si solo localizas memoria para el array de elementos.
solo tendrás el puntero del array de elementos y no deberías tener que modificar nada del código, ya que el array es a fin de cuentas un puntero.
El array contendra elementos de tipo element que tendrán internamente arrays estaticos.
--- Código: C++ --- struct element //record for senders{char date[10];//The date of the transferint amountOfMoney;//the amount of money sendchar senderName[500];//the sender namechar receiverName[500];// the receiver name}; element * list; list=new element[3000]; //o tambien list=(element*)malloc(sizeof(element)*3000);
m0skit0:
Eso que tienes es mucho espacio para la pila. Si lo haces como te digo, no tienes que cambiar nada en el código, los vectores son punteros ^_^
EDITO: por cierto, me equivoqué ligeramente en el código de malloc() que te puse, ya está corregido.
Navegación
[#] Página Siguiente
Ir a la versión completa