C ++中没有“new”关键字的内存分配
这个问题在这里已经有了答案:
这些变量的范围是“自动的”。 该语言保证您的程序将在当前块的末尾释放此存储。 它可能在堆栈中,但没有任何东西强制实现使用堆栈。 底线:没有泄漏。
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