[英]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');
}
這是我用來描述我在理解new
和delete
遇到的問題的程序。 'k'會產生內存泄漏嗎?
該代碼不是異常安全的-如果在new[]
和delete[]
之間拋出異常,則指向的塊將泄漏。 使用std::vector
解決此問題。
正如Sharptooth所指出的那樣,您應該使用try-catch塊來確保捕獲到任何異常並釋放k
。 在一般情況下,可以使用valgrind檢查程序是否釋放執行期間分配的所有塊。
不,在您釋放循環中的內存的情況下,它不會。 但是,在這種情況下使用scoped_array會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.