什么是C&C++中的原始内存?

Des*_*tor 3 c++ memory

很抱歉提出这个问题,但实际上我不知道这个问题.我在下面的FAQ条目中读过: 我可以使用new分配free()指针吗?我可以删除用malloc()分配的指针吗?

此外,无法保证new和delete用于获取和释放原始内存的机制与malloc()和兼容free().

我只是想知道这是什么"原始记忆"?

Rah*_*thi 6

原始内存是指C和C++中的非托管内存.malloc,calloc,realloc和free是简单处理原始内存的低级函数.

您也可以参考这份有关原始内存的斯坦福文档


Mik*_*our 5

“原始内存”是指内存块,被视为非结构化字节数组。高级语言使用这些作为对象的存储;程序通常与这些对象交互,而不是低级字节值。

在 C++ 中,可以使用两种不同的分配函数动态分配原始内存:

  • operator new, 用于在使用创建对象时从空闲存储分配new
  • malloc 来自 C 库

分配的内存new必须用delete; 分配的内存malloc必须用 释放free

您引用的那句话解释了这些可能使用不同的机制来管理分配;所以使用错误的函数来释放内存是错误的(例如分配内存new并尝试释放它free)。