相关疑难解决方法(0)

在C++中混淆了删除和自由功能

可能重复:
new/delete和malloc/free有什么区别?

class Foo
   {
    public:
     Foo() { x =  new int; } 
     ~Foo() { delete x; }
    private:
        int *x;
   };

  Foo *p = new Foo[10];
  free ( p );
Run Code Online (Sandbox Code Playgroud)

我对上面的代码感到困惑.它有什么问题吗?

c++ free destructor delete-operator

0
推荐指数
2
解决办法
8855
查看次数

这种方式分配内存不好吗?

我很想知道如何malloc分配内存(你能告诉我吗?),所以我试了一下.

这是分配内存的坏方法吗?

void* myMalloc(unsigned int size) {
    return (void*) new bool[size];
}
Run Code Online (Sandbox Code Playgroud)

c++ memory-management

0
推荐指数
1
解决办法
303
查看次数

如何避免这种内存泄漏?

这是我的代码:

void MIDITest::CreateNoteBlock() {
    IMidiMsgExt* midiMessage = new IMidiMsgExt;
    midiMessage->MakemidiMessageMsg(57, 100, 0, 0, 0);
    queuedNotes.insert(*midiMessage);

    midiMessage = new IMidiMsgExt;
    midiMessage->MakemidiMessageMsg(60, 100, 0, tickSize * 38, 0);
    queuedNotes.insert(*midiMessage);

    midiMessage = new IMidiMsgExt;
    midiMessage->MakemidiMessageMsg(62, 100, 0, 0, 0);
    queuedNotes.insert(*midiMessage);

    midiMessage = new IMidiMsgExt;
    midiMessage->MakemidiMessageMsg(65, 100, 0, tickSize * 32, 0);
    queuedNotes.insert(*midiMessage);

    midiMessage = new IMidiMsgExt;
    midiMessage->MakemidiMessageMsg(57, 0, tickSize * 111, 0);
    queuedNotes.insert(*midiMessage);

    midiMessage = new IMidiMsgExt;
    midiMessage->MakemidiMessageMsg(60, 0, tickSize * 111, 0);
    queuedNotes.insert(*midiMessage);

    midiMessage = new IMidiMsgExt;
    midiMessage->MakemidiMessageMsg(62, 0, tickSize * 75, …
Run Code Online (Sandbox Code Playgroud)

c++ methods free memory-leaks

0
推荐指数
2
解决办法
107
查看次数

为什么没有在malloc中调用构造函数?

为什么构造/析构函数不是在使用所谓的mallocfree在C++中,而不是当我们使用newdelete,构造函数/析构函数被调用?为什么会这样?

c++

-1
推荐指数
2
解决办法
242
查看次数