c++ - 在 void 指针上使用 new

标签 c++

int main()
{
    void* Foo = new???
    delete Foo;
}

你是怎么做类似上述的事情的?你不能放 new void[size]。而且我不想知道如何使用 malloc()free() 来做到这一点。我已经知道这行得通。我很好奇,想知道 new 和 delete 是怎么做的。

我在谷歌上搜索了一下,看到了一些关于 operator new(size);和 operator delete(size);

这些和new/delete有什么区别?为什么 C++ 不仅仅允许 new void* [size]

最佳答案

这样就可以了:

int main()
{
    void* Foo = ::operator new(N);
    ::operator delete(Foo);
}

这些运算符分配/释放以字节为单位的原始内存,就像 malloc

关于c++ - 在 void 指针上使用 new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14111900/

相关文章:

c++ - 计算 Collat​​z 序列的长度 - 自定义迭代器会产生减速?

c++ - 如何将 Crypto++ 库添加到 Qt 项目中

c++ - 如果模板类型是另一个模板则运行代码

c++ - 为什么 std::pair 类标准更改为不允许在 C++11 中仅具有非常量复制构造函数的类型?

c++ - C++中数组的QVector

c++ - 如何强制 Eclipse 使用 g++ 而不是 gcc?

C++ 使用 RAII 和抛出的析构函数

c++ - 旧的(类 C)fscanf 方法的现代等效(C++)样式是什么?

c++ - a+b的值和char类型

c++ - 无法创建 ICaptureGraphBuilder2 的实例