c++ - 将 malloc 更改为新的会导致错误

标签 c++

http://sequitur.info/sequitur_simple.cc 处有一个代码

我更改了 mallocfree

R = (rules **) malloc(sizeof(rules *) * num_rules);
free(R);

新建删除

R = (rules **) new(sizeof(rules *) * num_rules);  //ERROR
delete(R);

但是 g++ 显示此错误:

error: expected type-specifier before â;â token
error: invalid conversion from âlong unsigned intâ to âvoid*â [-fpermissive]
/usr/include/c++/4.6/new:103:14: error:   initializing argument 2 of âvoid* operator new(std::size_t, void*)â [-fpermissive]

最佳答案

假设你的变量类型是正确的,应该是

R = new rules*[num_rules];

稍后,当您要释放它时,使用

delete[] R;

但很可能,OP 正在尝试解决此处的“错误”问题(设计这段代码时所做的假设可能不正确......)。 更多详情引用Jerry Coffin的回答here

关于什么时候new像函数一样使用(placement new),引用refp的回答here

关于c++ - 将 malloc 更改为新的会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15018331/

相关文章:

c++ - 包装与内置函数同名的函数

c++ - 隐藏 exe 上的控制台窗口

c++ - 如何将 C++ 共享库与 gcc 链接

android - NDK 主文件夹中的目录与 NDK 版本有何关系?

C++线程问题

c++ - 在 C++ VSCode 中的同一行上格式化花括号

c++ - 我如何检测网络摄像头并比较本地文件以匹配面部 OpenCV

c++ - 引用计数

C++ 和 zlib,帮助压缩字符串

c++ - 如何用glm旋转3D相机