在这个问题,有人建议意见,我应该不会投的结果malloc,即
int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
而不是:
int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
我在一些不同的函数中有一些代码看起来像这样:
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;
}
Run Code Online (Sandbox Code Playgroud)
someFunction ()并useData ()在单独的模块(*.c文件)中定义.
问题是,虽然malloc工作正常,并且分配的内存可用someFunction,但一旦函数返回,相同的内存就不可用.
这里可以看到程序的示例运行,输出显示各种存储器地址.
有人可以向我解释我在这里做错了什么,以及如何让这段代码工作?
编辑:所以似乎我需要使用双指针来做这个 - 当我真的需要使用双指针时,我将如何做同样的事情?所以例如数据就是
int **data = NULL; //used for 2D array
Run Code Online (Sandbox Code Playgroud)
那么我是否需要在函数调用中使用三指针?