键入一个指向int的void指针,内存分配不足

时间:2017-10-07 03:36:37

标签: c pointers void-pointers

我正在初始化一个带有1个字节内存的void指针,并将其强制转换为int指针,并取消引用它,给它一个值3(需要4个字节),但运行正常。这不应该导致错误或导致像OOM这样的运行时异常吗?

void* record = malloc(1);
int i=3;
*((int*)record) = 3;

1 个答案:

答案 0 :(得分:5)

如果您在此处完成了malloc分配的内存块的结尾,则调用undefined behavior

未定义的行为意味着无法预测程序的行为。它可能崩溃,它可能会输出奇怪的结果,或者它似乎可以正常工作。此外,一个看似无关的更改,例如添加未使用的局部变量或调用printf进行调试,可能会改变未定义行为的显示方式。

总结一下,对于未定义的行为,仅仅因为程序 崩溃并不意味着