相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果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)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

如何分配内存并将其(通过指针参数)返回给调用函数?

我在一些不同的函数中有一些代码看起来像这样:

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)

那么我是否需要在函数调用中使用三指针?

c malloc pointers

32
推荐指数
3
解决办法
4万
查看次数

标签 统计

c ×2

malloc ×2

casting ×1

pointers ×1