我正在尝试编写简单的pgm文件读取C程序 . 我不得不创建简单的结构:
typedef struct pgmImage {
int R; //rows
int C; //collumns
int G; //grey scale
int **pix; // array of pixels
}Image;
现在我必须初始化空的Image结构 . 我需要一个在其他函数中基于* .pgm文件设置所有变量 . 我一直在“无法读取内存”和“使用的部分化局部变量x” . 我试过简单地做:
图像* x = 0;
但是当读取功能尝试设置R,C,G值时程序崩溃 .
3 回答
它是图像元素的静态内存分配
x
要么
它是图像的动态内存分配,
x
是指向已分配内存的指针calloc
将分配emory并将所有内存启动为0,因此结构中的指针将系统地启动为NULL如果你想要一个指向Image的指针,你必须像这样初始化 .
像这样访问图像(x)阵营:
但首先你需要为你的图像分配内存 .
如果要使用指针,则必须分配足够的内存来保存结构 . 但是,您尝试取消引用空指针:这会导致未定义的行为 .
然后你可以初始化成员 . 注意:这里使用
calloc
是不可移植的,因为无法保证空指针的内存表示为全位为零 .无论如何,似乎你不需要在这里使用指针 .