0

私はIMAGE_T、独自の alloc 関数を持つ構造体 (以下に示します。フランス語を許してください) を使用しています。

typedef struct {
    int nbl;        /* nombre de ligne de l'image */
    int nbc;        /* nombre de colonnes de l’image */
    unsigned char **data;   /* tableau bidim des pixels de l’image */
} IMAGE_T;



IMAGE_T *alloc_image(int nbl, int nbc){
    int taille = nbl*nbc+100;
    IMAGE_T * image;
    image = (IMAGE_T *) calloc(taille, sizeof(unsigned char)); 
    return image;
}

デバッガーを使用すると、「未処理の例外: 0xc0000005: アクセス違反の読み取り場所 0x00000000」というメッセージが表示されます。..これは、alloc_imageが正しく機能していないことに関連していると確信しています。助言がありますか?

IMAGE_T(さらに詳しくは、 I'm then を宣言した後、を返す別の関数を使用します。これには、メモリを割り当てるために、その中IMAGE_T *に関数が含まれていalloc_imageます。これに問題はありますか?)

ありがとう

4

1 に答える 1

0

アクセス違反が発生する理由は、メモリを割り当てるときに calloc() が null になる「データ」メンバーを操作しようとしているからだと思います。

そうは言っても、IMAGE_T の「データ」メンバーが unsigned char ** である理由を理解したいと思いますか? 単純に unsigned char * ではないのはなぜですか? (次に、alloc_image はメモリを IMAGE_T に割り当て、その割り当てられた構造内で「データ」用のスペースを割り当てる必要があります。)

于 2013-01-08T23:21:39.437 に答える