編寫下面的代碼後:C++公共構造地址
#include <iostream>
using namespace std;
typedef struct Node {
int value;
Node(int index) {
value = index;
}
} Node;
int main() {
Node* arr[10];
for(int i = 0; i < 10; i++) {
arr[i] = &Node(i);
}
for(int i = 0; i < 10; i++)
cout << arr[i]->value << endl;
}
我看到的代碼只打印9的,而不是所有的數字從0到9這是應該。 在調試代碼後,我看到每個i的arr [i]的地址都是相同的,並且Node(i)僅釋放了arr [i]的空間一次,之後只有value = index
沒有釋放任何空間其他空間。爲什麼?
在鍵盤上:http://codepad.org/boErRgnM它給出了'節點(i)'是臨時的警告。也許你應該堅持'新節點(i)' – quasiverse 2011-04-02 23:14:06
我錯誤地寫了這個 – 2011-04-02 23:14:58
後,我只是想知道避免問題的最好辦法是確保你的代碼編譯0警告。警告在技術上是有效的,但幾乎總是會導致問題的編程錯誤。您應該**始終**確保沒有警告(並儘可能高地轉動警告)。 – 2011-04-03 00:04:00