C ++中没有“new”关键字的内存分配

这个问题在这里已经有了答案:

  • 为什么C ++程序员应该尽量减少对'新'的使用? 17个答案

  • 这些变量的范围是“自动的”。 该语言保证您的程序将在当前块的末尾释放此存储。 它可能在堆栈中,但没有任何东西强制实现使用堆栈。 底线:没有泄漏。


    malloc和new会在堆上分配内存,否则将数据放在堆栈上。 堆上的任何内容都需要手动释放。

    另外值得注意的是malloc和new不应该混合使用。

    不要为类类型使用malloc,因为这可能会导致问题。

    任何使用new的应该使用delete,并且任何使用new []的应该使用delete []。

    例如

    // example of new[] and delete[]
    int* ints = new int[10];
    ...
    delete [] ints;
    
    
    // example of malloc and free
    int* ints = static_cast<int*>(malloc(sizeof(int) * 10));
    ...
    free(ints);
    
    链接地址: http://www.djcxy.com/p/40645.html

    上一篇: Memory allocation in C++ without the 'new' keyword

    下一篇: Allocating a vector vs. a pointer to a vector