缺少删除未定义的行为?

时间:2014-06-10 08:42:56

标签: c++ memory-management language-lawyer

当我分配内存而不调用delete时,这是未定义的行为吗?

示例:

int main(int argc, char** argv) {
    int* a = new int[1];
    // next code only to prevent optimization (hopefully)
    *a = argc; std::cout << *a << std::endl;
    // no delete
    return 0;
}

(我们假设new没有优化出来。)

1 个答案:

答案 0 :(得分:0)

它不是未定义的行为;它是一个内存泄漏。

当然泄漏&#34;存在&#34;只要进程仍在运行;在这种情况下,过程立即退出(并且泄漏的概念变得没有实际意义)。