UTNianos

Versión completa: Ayuda programa c - error de memoria
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Alguno me ayuda a encontrarle el problema?
No se que puede ser me volvio boludo ya....

Necesito resolverlo con todos esos punteros, supuestamente me lo dieron lleno de errores, salve varios pero ahora me tira error de memoria y ya probe de todoConfused


#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>


int vectorcreate(long **inicio,int cant);
void vectormult(int factor, long *inicio, int cant);

int main(void){
int datacant;
int i;
long *inicio;


printf ("Ingrese la cantidad de datos a procesar\r\n");
scanf("%d",&datacant);
datacant = vectorcreate(&inicio,datacant);
vectormult(2,inicio,datacant);

for(i=0;i<datacant;i++){
printf("Valor multiplicado pro el factor: %d", inicio[i]);
}

free(inicio);
return(0);
}



int vectorcreate(long **inicio,int cant){
int i;

*inicio = (long*) malloc(cant * sizeof (long));

if(*inicio = NULL){
printf("%d",errno);
return(-1);
}

for(i=0;i<cant;i++){
printf("Ingrese los datos a procesar");
scanf("%ld", *(inicio+i));
}

return(cant);
}

void vectormult(int factor, long *inicio, int cant){

int i;

for(i=0;i<cant;i++){
inicio[i] = inicio[i] * factor;
}

}




En pastebin:

http://pastebin.com/E4SzXegd

(no se cuanto dure)


graciasss!


int vectorcreate(long **inicio,int cant){
int i;
*inicio = (long*) malloc(cant * sizeof (long));

if(*inicio == NULL){ //Faltaba un =
printf("%d",errno);
return(-1);
}

for(i=0;i<cant;i++){
printf("Ingrese los datos a procesar");
scanf("%ld", *inicio + i); //Al hacer *(inicio+i) estaba sumandole i al puntero a puntero, y no al puntero del vector
}

return(cant);
}



Ahí anda!
Muchas gracias Anirus!!!
Un tip para evitar errores como este...poner:



...
if (NULL == *algo)
...




Si te falta un =, te va a saltar un error de l-value por estar tratando de asignarle un valor a una constante (Y)
Momento, iostream no es de C++? Y no es #include <iostream> sin el .h? gcc me tira cualquier cosa si lo trato de compilar, pero g++ anda bien...
(21-07-2011 00:15)rld escribió: [ -> ]Un tip para evitar errores como este...poner:



...
if (NULL == *algo)
...




Si te falta un =, te va a saltar un error de l-value por estar tratando de asignarle un valor a una constante (Y)
Momento, iostream no es de C++? Y no es #include <iostream> sin el .h? gcc me tira cualquier cosa si lo trato de compilar, pero g++ anda bien...

Buena idea, yo SIEMPRE me equivoco en eso xD, es culpa de Pascal.
URLs de referencia