0

好吧,我想通过一个 void 函数来启动我的二维数组。但我得到一个分段错误......

那是我的代码:

    #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; 但我不知道为什么!

谢谢你的帮助

4

3 回答 3

4

在这条线上:

    choixGEN=(int**) malloc (sizeof(int*)*2);

您只为 2 秒分配空间,但您访问循环int*中的第三个元素。for

于 2012-07-20T19:44:58.337 回答
1

您只为两个分配内存,(int*)但您尝试引用choixGEN[0],choixGEN[1],choixGEN[2]哪个是 3

于 2012-07-20T19:44:45.233 回答
0

一般来说,SegFaultinC是指:

  1. 您正在访问内存中未分配的位置。
  2. 您正在使用悬空指针访问内存位置

所以,很可能,你的问题出在这一行:

choixGEN=(int**) malloc (sizeof(int*)*2);

您声明了一个int*** choixGEN但仅分配的内存(int**)

于 2012-07-21T00:07:58.550 回答