簡體   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