如何完成内存分配



我期待空指针异常,但我得到输出 222。这是如何工作的。

int main()
{
int *p = (int*)malloc(0);
*p = 222;
cout << *p;
return 0;
}

程序的行为未定义

传递 0 的malloc的行为是实现定义的它可以返回 0指针。如果它返回指针,则必须将该指针传递给free,但不得服从该指针。

C 和 C++ 在这方面没有区别。

我期待空指针异常

你的期望被误导了。

首先,malloc不保证在分配 0 大小时会重新输出空指针。

其次,定向空指针(或malloc(0)返回的任何指针(不能保证会导致异常。相反,行为是不确定的。

相关内容

  • 没有找到相关文章

最新更新