[英]Passing double pointer as function argument
我只是想通过该函数将指针分配给另一个指针(相同的内存地址)。 我的代码如下:
#include <stdio.h>
void d(int** a)
{
int* val_ptr = malloc(1);
*val_ptr = 5;
printf("%d\n", *val_ptr);
a = &val_ptr;
}
int main()
{
int* a = NULL;
d(&a);
printf("%d\n", *a);
return 0;
}
链接输出
5
Segmentation fault
您的代码有三个问题:
这里int* val_ptr = malloc(1);
,您分配1个字节而不是为int
分配空间。 使用以下内容修复它:
int* val_ptr = malloc(1 * sizeof(int));
这个a = &val_ptr;
不是你想要的。 它更改本地指针,并使其指向val_ptr
的地址。 这不会影响您在main
定义的指针。
使用修复
*a = val_ptr;
这样,在指针main
也将反映这种变化,并会指向malloc
版内存
使用分配的内存后,应free
它。 加
free(a);
在main
中释放printf
之后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.