在函数中初始化数组时遇到了不稳定的行为。
我在下面有一个未初始化的指针:
int *arr;
我将它传递给函数进行初始化。
init_arr(&arr);
void init_arr(int **arr)
{
*arr = (int *) calloc(10, sizeof **arr);
}
指针被启动,当我尝试获取项目* arr [2]以及更大时我得到错误:
Cannot access memory to address 0x0
源代码是使用gcc版本4.8.4编译的
答案 0 :(得分:1)
而不是表达
*arr[2]
你必须使用
arr[2]
您分配了一个包含10个整数的数组。因此,要访问数组的元素,只需编写例如arr[2]
。
如果你的意思是在函数init
中访问已分配数组的元素,那么你必须写
( *arr )[2]