【发布时间】:2012-01-19 15:17:44
【问题描述】:
我有一个函数可以接收指向 100 个整数的动态数组的指针。但在此之前,我只有 50 个由 malloc 或 calloc 分配,而不是 100 个。
有没有一种方法可以检查是否分配了任何元素(例如第 79 个),而不是想知道这个 SIGSEGV 的实际含义是什么?
我的问题纯粹是理论上的,我没有要显示的实际代码。
【问题讨论】:
-
“检查是否分配了任何元素而不是想知道这个 SIGSEGV 的实际含义”是什么意思?
-
好吧,如果我在索引中犯了错误——无论是在分配数据还是在访问数据时,我都会得到可能难以理解的 SIGSEGV。就像前段时间一样,我需要一个用于 3 通道图像数据的缓冲区,但我忘记将要分配的字节数乘以 3。所以我分配的缓冲区比预期的要小 3 倍。好吧,valgrind 最后帮助解决了这个问题。
-
更重要的是,您可能不会收到
SIGSEGV。 -
但是这样我就没有错误和一些完全无用的数据了。万岁。