MST

星途 面试题库

面试题:C++中常见动态内存错误之数组内存泄漏

请写出一段C++代码,在使用`new[]`分配数组内存后,由于逻辑问题导致内存泄漏,并说明如何修改代码来避免这种情况。
17.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

内存泄漏代码示例

#include <iostream>

int main() {
    int* arr = new int[10];
    // 逻辑问题,没有释放内存就返回了
    return 0;
}

修改代码以避免内存泄漏

#include <iostream>

int main() {
    int* arr = new int[10];
    // 这里进行数组的操作

    // 使用delete[]释放分配的内存
    delete[] arr;
    return 0;
}

解释:在第一段代码中,使用new[]分配了一个包含10个int类型元素的数组内存,但在函数结束前没有使用delete[]释放该内存,从而导致内存泄漏。在修改后的代码中,在数组使用完毕后,使用delete[]操作符正确地释放了之前分配的内存,避免了内存泄漏问题。