我只想通过函数(相同的内存地址)分配指向另一个指针的指针.我的代码如下:
#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;
}
Run Code Online (Sandbox Code Playgroud)
链接输出
5
Segmentation fault
Run Code Online (Sandbox Code Playgroud)
您的代码有三个问题:
在这里int* val_ptr = malloc(1);,您分配1个字节而不是为一个分配空间int.使用以下方法修复它:
int* val_ptr = malloc(1 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)这a = &val_ptr;不是你想要的.它改变了本地指针并使其指向地址val_ptr.这不会影响您定义的指针main.
使用修复它
*a = val_ptr;
Run Code Online (Sandbox Code Playgroud)
这样,指针in main也将反映更改并指向malloced内存
你应该free在使用后分配内存.加
free(a);
Run Code Online (Sandbox Code Playgroud)
后printf在main释放它.
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |