creo que lo tengo hasta el caso más básico:Malloc dentro de una llamada a función parece liberarse a la vuelta?
int main(int argc, char ** argv) {
int * arr;
foo(arr);
printf("car[3]=%d\n",arr[3]);
free (arr);
return 1;
}
void foo(int * arr) {
arr = (int*) malloc(sizeof(int)*25);
arr[3] = 69;
}
La salida es la siguiente:
> ./a.out
car[3]=-1869558540
a.out(4100) malloc: *** error for object 0x8fe01037: Non-aligned pointer
being freed
*** set a breakpoint in malloc_error_break to debug
>
Si alguien puede arrojar luz sobre dónde está fallando mi entender, sería ser muy apreciado.
¿Puedo decir, por favor, no arrojar el valor de retorno de malloc? No es obligatorio y puede ocultar errores. – freespace
@freespace, es un hábito que he desarrollado a lo largo de los años. Todos y luego tengo que enviar mi código a través de herramientas de análisis de código estático, y se quejan de que no lanzan punteros. –
Perdón por dejarlo colgando sin respuesta: no hay una buena manera de encontrar respuestas en los comentarios a menos que sondeara todos mis comentarios :) He dejado la respuesta en http://stackoverflow.com/questions/108768/needless- puntero-moldes-en-C# 108781 – freespace