次のコード行があります。
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_inititalizer の定義は次のとおりです。
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_initalizer メソッドの malloc が、メソッドが戻るときにパラメーターとして渡されたポインターにアタッチされたままにならないのはなぜですか? 初期化子の呼び出しは何もしないようです。ポインターとしてではなく実際の c_obj_thing を渡すと、イニタライザーで行われた変更が返されないことを意味することは理解していますが、プログラム全体で動的メモリが永続化されていると思いました。