我开始研究Xcode,但后来决定使用CLion。
我有一个具有指针char * buffer
的类。构造函数如下所示:
example::example (char input[], unsigned long len) {
buffer = new char[len];
for (unsigned long i = 0; i < len; i++) {
buffer[i] = input[i];
}
length = len;
}
析构函数基本上只是delete[] buffer
。
在Xcode上运行此代码时没有问题,但是在同一台计算机上的CLion上运行相同的代码时,我会收到此消息:
Project(77633,0x7fffb5cb7340) malloc: *** error for object 0x7f8a35400350: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Process finished with exit code 6
尽管代码可以运行,但我仍然认为它很奇怪,并且在调试后我发现它来自类的析构函数。如果我将delete[] buffer
部分注释掉,则消息消失。
所以现在我很困惑,我认为您应该始终删除使用new
分配的内存。不是吗?
答案 0 :(得分:0)
首先,CLion和Xcode都不是编译器。 在后台,他们运行一些可配置的编译器。 某些版本的gcc或clang带有一些编译标志 也可以配置。所以首先要确定哪个编译器 在每个环境中都被使用。然后,将更容易回答这个问题。 当然,始终需要一个最小的完整且可验证的示例。 顺便说一句,您确定len不为0吗?当人们尝试分配0个字节时,就会发生坏事……