Viv*_*thi 5 c malloc pointers segmentation-fault
以下代码给出了分段错误.我无法弄清楚为什么.请参阅..
#include <stdio.h>
#include <stdlib.h>
int main()
{
int **ptr;
int *val;
int x = 7;
val = &x;
*ptr = (int *)malloc(10 * sizeof (*val));
*ptr[0] = *val;
printf("%d\n", *ptr[0] );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在使用gdb进行调试时,它说:
Program received signal SIGSEGV, Segmentation fault.
0x0804843f in main () at temp.c:10
*ptr = (int *)malloc(10 * sizeof (*val));
Run Code Online (Sandbox Code Playgroud)
任何有关此事的帮助表示赞赏.
int **ptr;
*ptr = (int *)malloc(10 * sizeof (*val));
Run Code Online (Sandbox Code Playgroud)
第一个语句声明了一个双指针.
第二次取消引用指针.为了能够取消引用它,指针应该指向一些有效的内存.因此不会出现seg错误.
如果需要为指针数组分配足够的内存,则需要:
ptr = malloc(sizeof(int *) * 10);
Run Code Online (Sandbox Code Playgroud)
现在ptr指向一个足以容纳10指针的内存int.
现在可以使用ptr[i]where 访问每个自身为指针的数组元素,
i < 10
Run Code Online (Sandbox Code Playgroud)