[問題] C/C++程式區塊中變數宣告與消滅
在C/C++中所有的程式區塊(就是{}括弧)中的變數在離開區塊時會消滅
for ex.
#include <iostream>
using namespace std;
int main()
{
{
int i=0;
cout << i;
}
// cout << i;
{
int i=1;
cout << i;
}
return 0;
}
上面的程式是合法的 執行結果是顯示出01
但是如果將//的註解拿掉 編譯會出現錯誤
我的問題是, 如果我在{}中使用pointer..
for ex
#include <iostream>
using namespace std;
int main()
{
{
int *i=new int(0);
cout << *i;
}
{
int *i=new int(1);
cout << *i;
}
return 0;
}
上面的程式依然是合法的, 執行的結果也還是01
但是兩個*i的記憶體有被釋放嗎?
如果沒有的話, 要怎麼存取?
我明白在function中的new並不會被釋放
不過在function中再使用{}就讓我有一點懷疑...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 70.120.191.246
→
04/25 11:00, , 1F
04/25 11:00, 1F
→
04/25 11:01, , 2F
04/25 11:01, 2F
→
04/25 11:01, , 3F
04/25 11:01, 3F
推
04/25 11:38, , 4F
04/25 11:38, 4F
→
04/25 12:31, , 5F
04/25 12:31, 5F
推
04/26 02:25, , 6F
04/26 02:25, 6F
→
04/26 02:25, , 7F
04/26 02:25, 7F
推
04/26 06:11, , 8F
04/26 06:11, 8F
→
04/26 06:12, , 9F
04/26 06:12, 9F
→
04/26 06:13, , 10F
04/26 06:13, 10F
推
04/26 12:21, , 11F
04/26 12:21, 11F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):