【发布时间】:2016-07-20 01:40:24
【问题描述】:
我第一次来这里。试图通过搜索找到解决方案,但我仍然无法在这里看到我的问题:
结构
typedef struct
{
float** image_data;
int m;
int n;
} image;
短路的主要
int main(int argc, char *argv[])
{
int m, n, c, iters;
image u;
unsigned char *image_chars;
char *input_jpeg_filename, *output_jpeg_filename;
/*funtion importing jpeg sets chars and hight/width (works)*/
import_JPEG_file(input_jpeg_filename, &image_chars, &m, &n, &c);
allocate_image (&u, m, n);
printf"m og n (in main function): %i %i\n", u->m, u->n);
return 0;
}
分配函数
void allocate_image(image *u, int m, int n)
{
u = malloc(sizeof(struct image));
u->m=m;
u->n=n;
int i;
u->image_data=(float**)malloc(m*sizeof(float*));
for(i=0; i<m; i++){
u->image_data[i]=(float*)malloc(n*sizeof(float));
}
printf("m og n: %i %i\n", u->m, u->n);
}
应该提到这是学校作业的一部分,但有人告诉我在这里问基本问题没有害处。我也仅限于 C89。
因此,正如经验丰富的编码人员可能已经看到的那样,它没有正确分配。 m 和 n 值在 allocate 函数中正确打印,但由于某种原因,我不允许在外部使用 u->m。我有一种感觉,我搞砸了一些指针与地址,但我找不到它..
至于重新编写所有代码,我想尝试将变量保留在 main 中(没有全局变量)。
【问题讨论】:
-
u = malloc(sizeof(struct image));仅更改函数参数。它不会传回给调用者。 -
函数之外 - 你应该引用 'image' 的成员,例如 ... printf("m og n: %i %i\n", u.m, u.n); - 因为 u 不是指向图像的指针。
标签: c struct malloc dynamic-memory-allocation