HolaBuenos Dias.
Me podrian Ayudar.
Quiero guardar una cantidad de numeros desconocidos en un array atraves de punteros en C++,si guardo mas de lo que declare el tamaño compila pero deja de funcionar el ejecutable.Se puede asignar el tamaño del array despues de guardar todos los numeros ?

Aqui tengo mi codigo :
#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
int *A=NULL,n,i=0;


A= new int [10];


while (i<=1000)
{
A[i]=i;	
i++;	
}


int y=0;

while(y<=1000)
{
	cout<<A[y]<<endl;
	y++;
	
}


}
http://byronlabs.blogspot.com/
Lo mas facil y comodo es usar la clase vector que te permite ir añadiendo o eliminando valores de manera dinamica y asi te evitas problemas
[Enlace externo eliminado para invitados] descripción de la misma
Skype:crack8111
Debes de obtener el tamaño que tendrá el array por lo menos en tiempo de ejecución y luego ya asignarle ese tamaño con new. Si te es imposible saber de alguna manera la cantidad de elementos, lo que dice crack81 es lo más viable. Usa la clase vector, que es lo mismo que un array pero puedes irle agregando elementos de manera dinámica sin problemas.
//mHmm..
El código que propones tiene errores bastante graves,

Estas reservando memoria para 10 enteros, y luego escribes el resto fuera de la memoria que has reservado , te olvidas tambien de hacer un delete, para liberar la memoria

El programa te compila porque no hay error de código, pero si de concepto, cuando tu reservas memoria, especificas que cantidad de memoria quieres reservar, y SOLO puedes escribir en esa zona de memoria, pero el compilador no te va a detectar esos errores.

En C++ existe la clase vector, que se encarga de "alocar" memoria automaticamente, y no tienes que especificar el tamaño, creo que es lo que necesitas, tu código podría quedar de la siguiente forma
#include <vector>
#include <iostream>

using namespace std;

int main()
{
    vector<int> v;

    int i=0;
    while (i <= 1000)
    {
        v.push_back(i);
        i++;
    }

    int y=0;
    while(y < v.size())
    {
        cout << v[y] << endl;
        y++;
    }

    cin.get();
    return 0;
}
Un saludo

----------------------

(No habia leido el comentario de crack81, pero si, es como te ha comentado el)
"Si buscas resultados diferentes, no hagas siempre lo mismo"
(Albert Einstein)
No es que estaba programando algo simplemente estaba dando una idea de lo que queria realizar en C++...
Bueno gracias a todos
Gracias MeCraniDOS.
http://byronlabs.blogspot.com/
Responder

Volver a “C/C++”