在下面的代碼中,我將多個整數數組分配給一個指針。在每次調用時,指針的地址都是相同的,至少在我運行它時。如果我不使用delete [] y
,那麼這個過程將會被殺死而不會拋出任何異常。如果我添加該行,該過程將永遠運行。本地變量的C++內存管理內存分配
我的問題是,因爲在這兩種情況下(使用或不使用delete
)指針的地址在函數調用之間保持不變,這是否意味着分配內存中的相同空間?如果是的話,爲什麼在一個案例中這個過程停了下來,而另一個呢不是?
在一個更普遍的問題中,函數返回時用於局部變量的內存會發生什麼變化?內存管理策略在常規變量和指針之間是不同的嗎?
#include<cstdio>
#include<iostream>
#include<exception>
#include<new>
using namespace std;
void foo();
int main()
{
while(true)
foo();
}
void foo()
{
try{
int *y=new int[1000];
printf("%X\n",&y);
// delete [] y;
}
catch(exception &exc){
cerr<< exc.what();
}
}
您可能會發現'std :: cout'比'printf'簡單 – OMGtechy