我有下面的代碼行:的malloc的指針參數失敗
struct c_obj_thing *object = NULL;
c_obj_initalizer(object);
// at this point, (object == NULL) is 'true'
printf("Value: %d\n", object->value); // this segfaults
這裏是c_obj_initalizer的定義是:爲什麼在c_obj_initalizer方法中的malloc不能保持連接到
int c_obj_initalizer(struct c_obj_thing *objParam) {
objParam = malloc(sizeof(struct c_obj_thing));
objParam->pointerThing = NULL;
objParam->value = 0;
return 0;
}
指針在方法返回時作爲參數傳遞?這似乎是對初創者的呼籲沒有做任何事情。我意識到,將實際的c_obj_thing作爲指針傳遞並不意味着initalizer中所做的更改不會返回,但我認爲動態內存會在整個程序中保持不變。
啊,我明白了! Malloc只分配本地指針副本以指向新的內存。謝謝! – Tanaki 2012-04-29 05:13:03