动态内存如何与CLion一起工作?

时间:2018-07-29 14:33:35

标签: c++ xcode memory-management clion

我开始研究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分配的内存。不是吗?

1 个答案:

答案 0 :(得分:0)

首先,CLion和Xcode都不是编译器。 在后台,他们运行一些可配置的编译器。 某些版本的gcc或clang带有一些编译标志 也可以配置。所以首先要确定哪个编译器 在每个环境中都被使用。然后,将更容易回答这个问题。 当然,始终需要一个最小的完整且可验证的示例。 顺便说一句,您确定len不为0吗?当人们尝试分配0个字节时,就会发生坏事……