在C中初始化指向数组的指针

时间:2015-11-13 18:01:45

标签: c arrays pointers struct initialization

我遇到了一些指针问题(我对编码很新)。在main()中,我试图通过with open("/tmp/image.jpg", "w") as f: PIL.Image.fromarray(a).save(f, "jpeg") 初始化我的员工名单,这样我就可以打印它(下面没有包含该功能),但每当我尝试CodeBlocks时就关闭了。我查了很多关于指针的信息,但似乎很少有人处理数组/结构,所以任何帮助都会受到赞赏。不幸的是,我确定我有很多错误。

/tmp/image.jpg

2 个答案:

答案 0 :(得分:2)

最大的问题在于这两行:

pRoster = (workerT*)malloc(sizeof(workerT) * maxRoster);
pRoster = NULL;

在第一行中,您分配内存并将其分配给pRoster,但在下一行中,您将pRoster重新分配为空指针。稍后在initWorkerArray函数中取消引用空指针将导致undefined behavior。这次UB的最可能结果是崩溃。

此外,in C you should not cast the result of malloc或任何其他返回void *的函数。如果您包含正确的头文件,这不会导致任何问题,但您仍然不应该这样做。

答案 1 :(得分:2)

此外,在initWorkerArray中,从未分配strcpy(pList [1] ...)和strcpy(pList [2] ...),pList [1] .pName等的调用,因此这些strcpy调用会崩溃。