c++ - 如何将使用 malloc() 的 C 语句转换为 C++?

标签 c++ c memory-management malloc

我用这段代码在 C 中有一个缓冲区

    buffer = malloc(sizeof(uint32_t)*CACHE_LEN*2);

如何将此行更改为 C++?

使用 malloc 还是使用 new[] 更好?
我无法理解此 sizeof(uint32_t) 的含义。

最佳答案

你提到的那行在 C++ 中编译得很好,除了这个事实,如果 buffer 不是 void *,那么你可能需要转换的返回值malloc 在 C++ 中,您不需要在 C 中执行(并且可能不应该执行)。

如:

uint32_t *buffer = (uint32_t *) malloc(sizeof(uint32_t)*CACHE_LEN*2);

但是,您可能希望转换为new/delete 范式;这需要的不仅仅是改变那条线。

如:

uint32_t *buffer = new uint32_t[CACHE_LEN*2];
...
delete[] buffer;

如果你想更像 C++,那么使用 std::vector 或类似的:

std::vector<uint32_t> buffer(CACHE_LEN*2);

关于c++ - 如何将使用 malloc() 的 C 语句转换为 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28226016/

相关文章:

R在时间序列距离计算期间内存不足

c++ - 为什么我的 IWMPEvents 函数从未被调用?

c++ - 如何在C++中同步静态字段

c++ - Qt - 初始化表单

c - 浮点到 C 中的 char 数组,sprintf

c++ - 想要在Hudson C/C++上工作

c++ - 为什么在没有参数的方法中使用const?

c - 如何将 memset() 内存设置为特定模式而不是单个字节?

ios - 即使运行 HelloWorld_IPhone monotouch,仪器中的对象也会泄漏

c++ - Visual C++ 2010 释放数组指针速度慢