簡體   English   中英

此代碼中是否存在內存泄漏?

[英]Is there any memory leak in this code?

#include <iostream>

using namespace std;

int main()
{
    int i,j;
    int * k;
    char m;
    do{
        cin >> j;
        k = new int[j];
        for (i = 0; i < j; i++){
            k[i] = i;
            cout << k[i] << ", ";
        }

        delete[] k;

        cout << "\nContinue?\n";
        cin >> m;
    }while (m != 'n');
}

這是我用來描述我在理解newdelete遇到的問題的程序。 'k'會產生內存泄漏嗎?

該代碼不是異常安全的-如果在new[]delete[]之間拋出異常,則指向的塊將泄漏。 使用std::vector解決此問題。

正如Sharptooth所指出的那樣,您應該使用try-catch塊來確保捕獲到任何異常並釋放k 在一般情況下,可以使用valgrind檢查程序是否釋放執行期間分配的所有塊。

不,在您釋放循環中的內存的情況下,它不會。 但是,在這種情況下使用scoped_array會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM