【发布时间】:2019-12-29 02:48:45
【问题描述】:
有什么区别:
p = (int*) malloc (5*sizeof(int));
对
int *ptr = new int[5];
是 C 的内存分配的顶级版本,用于指向在内存中为 5 个整数创建一个点的指针吗?那么底部是C++的版本呢?它们出现在内存中的什么位置(如果出现)。
【问题讨论】:
-
取决于实现。 C++ 库的默认
operator new可能只是在后台调用malloc,也可能不会。它还可能分配额外的空间来跟踪数组大小,对用户程序是不可见的。 -
对于
ints,不是很多。但是尝试对非 POD 类型(过度简化,“具有构造函数的类型”)执行此操作,差异会很大,因为malloc不知道它应该首先调用构造函数。
标签: c++ c pointers malloc allocation