Code Bye

第二维已知的二维结构体数组内存问题

[size=24px][size=13px]代码:
#include<stdio.h>
#include<stdlib.h>

typedef struct xx{
 int a,b;
} XX;

int main(){
        int i,j,k=0;
        XX (*a)[4];
        a=(XX(*)[4])calloc(2,sizeof(XX*));

        for(i=0;i<2;i++)
                for(j=0;j<4;j++){
                        a[i][j].a=k++; //valgrind 报非法写
                        a[i][j].b=k;
                }

        for(i=0;i<2;i++)
                for(j=0;j<4;j++)
                        printf(“%d %d %d %d\n”,i,j,a[i][j].a,a[i][j].b); //valgrind报非法读

        free(a); //段错误
        return 0;
}

20分
sizeof(XX*)明显就不对
引用 1 楼 pengzhixi 的回复:

sizeof(XX*)明显就不对

我觉得应该是8就行吧,能正确打印结果。
那应该改成什么呢?


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明第二维已知的二维结构体数组内存问题