Programación General > C/C++

 Stack overflow

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa