繁体   English   中英

void函数中2D数组上的指针

[英]pointer on 2d array in a void function

好吧,我想通过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; 但是我不知道为什么!

谢谢你的帮助

在这行上:

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

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

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

SegFaultC SegFault表示:

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

因此,很可能您的问题出在以下这一行:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM