【发布时间】:2012-12-26 15:54:02
【问题描述】:
我有一个初学者问题 我需要将一个指针传递给一个函数,然后为这个指针分配动态内存。 我在主函数中创建指针,然后将它传递给应该分配内存的特定函数。但我收到此错误: "hist_array 可能在此函数中使用未初始化"
这是程序中的相关行: 从主要:
int* hist_array;
fillHistogram(first_image,hist_array,max_value+1);
功能:
void fillHistogram(int image[M][N], int* hist, int histLen){
hist=(int*)malloc(sizeof(histLen)*(histLen));
我无法更改函数的签名,它是作为结构化文件提供给我们的。所以我想知道我做错了什么。
还有一个问题。我用 malloc 创建的新数组,我希望它的所有值一开始都是 0。我该如何以最短的方式做到这一点?
【问题讨论】:
-
为什么要分配空间来存储指针?无论如何,您必须将结果存储在指针中,那么为什么不将函数指针存储在那里呢?
-
关于另一个问题,使用
calloc、void *calloc(size_t nmemb, size_t size);,为nmemb对象分配空间,每个对象大小为size,并将分配的内存归零。 -
此作业中不允许使用 calloc
-
我没听懂你的第一条评论
-
你确定fillhistogram的第二个参数是
int *吗?我觉得应该是int**,否则你不会改变hist_array的值。