好吧,我想通过void函数启动我的2D数组。但我获得了分段错误......
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void groupeetchoixgen(int*** choixGEN);
void main(int args, char **argv)
{
int** choixGEN;
int i,j;
choixGEN=(int**) malloc (sizeof(int*)*2);
for (i=0; i<3; i++)
{
choixGEN[i]=(int*) malloc (sizeof(int)*3);
}
groupeetchoixgen(&choixGEN);
}
void groupeetchoixgen(int*** choixGEN)
{
(*(choixGEN)[1])[0]=1;
}
我认为麻烦是(*(choixGEN)[1])[0] = 1; 但我不知道为什么!
感谢您的帮助
答案 0 :(得分:4)
在这一行:
choixGEN=(int**) malloc (sizeof(int*)*2);
您只为2 int*
分配空间,但是您可以访问for
循环中的第3个元素。
答案 1 :(得分:1)
您只为两个(int*)
分配内存,但是您尝试引用choixGEN[0],choixGEN[1],choixGEN[2]
这是3
答案 2 :(得分:0)
一般情况下,SegFault
中的C
表示:
所以,很可能,你的问题就在这一行:
choixGEN=(int**) malloc (sizeof(int*)*2);
您声明了int*** choixGEN
,但仅为(int**)