编写下面的代码后: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