【发布时间】:2010-11-26 18:22:54
【问题描述】:
我在几个不同的函数中有一些代码,看起来像这样:
void someFunction (int *data) {
data = (int *) malloc (sizeof (data));
}
void useData (int *data) {
printf ("%p", data);
}
int main () {
int *data = NULL;
someFunction (data);
useData (data);
return 0;
}
someFunction () 和 useData () 在单独的模块(*.c 文件)中定义。
问题在于,虽然 malloc 工作正常,并且分配的内存在 someFunction 中可用,但一旦函数返回,相同的内存就无法使用。
程序的示例运行可见here,输出显示各种内存地址。
有人可以向我解释一下我在这里做错了什么,以及如何让这段代码正常工作吗?
编辑:所以看来我需要使用双指针来执行此操作 - 当我实际上需要 use 双指针时,我将如何做同样的事情?所以例如数据是
int **data = NULL; //used for 2D array
然后我需要在函数调用中使用三重指针吗?
【问题讨论】:
-
是的,你需要三指针