【发布时间】:2011-08-30 09:10:24
【问题描述】:
我正在尝试初始化一个指向其中包含 0.0 值的结构的指针。看下面的情况:
typedef struct
{
float a;
float b;
float c;
} structA;
structA *ptr = calloc(100000, sizeof(structA));
我希望 *ptr 中的所有值都是 structA,初始值为 {0.0, 0.0, 0.0},但这不是我现在拥有的。 *ptr 的许多索引显示正确,但有些索引显示奇怪的值(如 {0.0, 0.0, 10241256124.0})。
如果我尝试 malloc,同样的事情会发生。
我该怎么办?
【问题讨论】:
-
您检查
calloc的返回值以确保它成功了吗?在分配内存和检查内存内容之间是否有任何代码在运行?你有多确定你没有在街区乱涂乱画? -
您如何检查
ptr的内容以找到这些奇怪的值? -
也许您可以包含
printf循环的代码,而不是过度使用标点符号。这是callocman page,calloc将分配的内存中的所有位设置为零。您可能一直在使用调试器检查ptr中的内容,因此询问您如何知道ptr被搞砸了是一个非常有效的问题。 -
你应该能够给出一个重现问题的简单的最小程序。
-
您说当您尝试
malloc()时会发生同样的事情。归零项目与非归零项目的比率是否大致相同?您的代码库是否可以有一个宏定义来覆盖calloc()隐藏在某处的函数调用?
标签: objective-c c memory struct