下面是一个简单的 VC++ 程序片段,该程序在 Visual Studio 10 上运行,支持线程构建块(开源 4.1)。
我从示例中编译并运行了一个程序,并且惊讶地看到来自 cout 的 new 运算符的输出。
int main() {
string str[N] = { string("a"), string("b") };
for (size_t i = 2; i < N; ++i) str[i] = str[i-1]+str[i-2];
string &to_scan = str[N-1];
size_t num_elem = to_scan.size();
size_t *max = new size_t[num_elem];
size_t *pos = new size_t[num_elem];
cout <<"*max : " << *max<< ", "<<"*pos :"<<*pos<<endl;
......
......
cout 输出如下所示:
*最大值:3452816845,*位置:3452816845
令我惊讶的是在这两种情况下 max 和 pos 的值相同。
这可能是由于库中新运算符的一些重载吗?
或者
这是要报告的错误吗?
或者
这只是巧合吗?