这是我的示例代码:
void test()
{
Object1 *obj = new Object1();
.
.
.
delete obj;
}
Run Code Online (Sandbox Code Playgroud)
我在Visual Studio中运行它,它在'delete obj;'的行中崩溃.这不是释放与对象关联的内存的正常方法吗?我意识到它会自动调用析构函数......这是正常的吗?
这是一段代码:
if(node->isleaf())
{
vector<string> vec = node->L;
vec.push_back(node->code);
sort(vec.begin(), vec.end());
Mesh* msh = loadLeaves(vec, node->code);
Simplification smp(msh);
smp.simplifyErrorBased(errorThreshold);
int meshFaceCount = msh->faces.size();
saveLeaves(vec, msh);
delete msh;
}
Run Code Online (Sandbox Code Playgroud)
loadleaves()是一个从磁盘读取网格并创建一个Mesh对象并返回它的函数.(想想vec并且node->code只是有关要打开的文件的信息)
我应该删除该delete msh;线路吗?
我有一个Django单元测试,我想在其中放置print语句用于调试目的,但显然django正在抑制它们.我怎样才能打印变量的值?我可能能够破解断言等,但想知道人们如何做到这一点.
首先,当你想释放分配给C++对象的内存时,首选哪一个?显式调用析构函数还是使用delete?
Object* object = new Object(...);
...
delete object;
Run Code Online (Sandbox Code Playgroud)
要么
object->~Object();
Run Code Online (Sandbox Code Playgroud)
第二,delete运算符是否隐式调用析构函数?
假设我们有一个名为A的类和另一个名为B.的类,我们想要一个将A转换为B的转换方法.
从软件架构的角度来看,哪一个更受青睐?
A.export()B.import()convert(A, B)或Convert(A)或...如果语言很重要,我正在使用C++
c++ ×3
object ×2
architecture ×1
debugging ×1
django ×1
new-operator ×1
python ×1
unit-testing ×1