C void函数中二维数组上的指针
我想用一个void函数来初始化我的2D数组。但我得到了一个分段错误 这是我的密码:C void函数中二维数组上的指针,c,C,我想用一个void函数来初始化我的2D数组。但我得到了一个分段错误 这是我的密码: #include <stdio.h> #include <stdlib.h> #include <string.h> void groupeetchoixgen(int*** choixGEN); void main(int args, char **argv) { int** choixGEN;
#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;
}
#包括
#包括
#包括
无效组选择根(内部***选择根);
void main(整型参数,字符**argv)
{
国际**choixGEN;
int i,j;
choixGEN=(int**)malloc(sizeof(int*)*2);
对于(i=0;i您只为两个(int*)
分配内存,但您尝试引用choixGEN[0]、choixGEN[1]、choixGEN[2]
即3您只为两个(int*)
分配内存,但您尝试引用choixGEN[0]、choixGEN[1]、choixGEN[2]
即3,在这一行:
choixGEN=(int**) malloc (sizeof(int*)*2);
choixGEN=(int**) malloc (sizeof(int*)*2);
您只为2个int*
s分配空间,但可以访问for
循环中的第三个元素。在这一行:
choixGEN=(int**) malloc (sizeof(int*)*2);
choixGEN=(int**) malloc (sizeof(int*)*2);
您只为2个int*
s分配空间,但您访问for
循环中的第三个元素。通常,C
中的segfult
表示:
您正在访问内存中未分配的位置
您正在使用悬空指针访问内存位置
因此,最有可能的问题是:
choixGEN=(int**) malloc (sizeof(int*)*2);
choixGEN=(int**) malloc (sizeof(int*)*2);
您声明了一个int***choixGEN
,但只为(int**)
分配了内存。通常,C
中的SegFault
表示:
您正在访问内存中未分配的位置
您正在使用悬空指针访问内存位置
因此,最有可能的问题是:
choixGEN=(int**) malloc (sizeof(int*)*2);
choixGEN=(int**) malloc (sizeof(int*)*2);
您声明了一个int***choixGEN
,但只为(int**)
分配了内存。您可以将错误消息粘贴到这里吗?它不应该是(*choixGEN)[1][0]=1;
?您可以将错误消息粘贴到这里吗?它不应该是(*choixGEN 1][0]=1;
?