C++ C++;指针--奇怪的循环行为
在main中,我试图调用mymath.cpp中的一个素数函数——它有一些 非常奇怪的行为,我不明白。(注意,该算法不起作用 然而——但这对我来说并不奇怪。) 奇怪的是,如果我把这句话注释掉:C++ C++;指针--奇怪的循环行为,c++,pointers,C++,Pointers,在main中,我试图调用mymath.cpp中的一个素数函数——它有一些 非常奇怪的行为,我不明白。(注意,该算法不起作用 然而——但这对我来说并不奇怪。) 奇怪的是,如果我把这句话注释掉: cout << "n:" << lastPrime->pnum <<"\n"; cout代码作为一个局部变量,名为addPrime,在其生命周期之外使用: lastPrime->pprime=&addPrime; lastPrime=
cout << "n:" << lastPrime->pnum <<"\n";
cout代码作为一个局部变量,名为addPrime
,在其生命周期之外使用:
lastPrime->pprime=&addPrime;
lastPrime=&addPrime;
cout << "n:" << lastPrime->pnum <<"\n";
return true;
} // 'lastPrime' is now a dangling pointer because it holds the address
// of 'addPrime' whose lifetime has ended.
lastPrime->pprime=&addPrime;
lastPrime=&addPrime;
cout代码已作为局部变量,名为addPrime
,在其生命周期之外使用:
lastPrime->pprime=&addPrime;
lastPrime=&addPrime;
cout << "n:" << lastPrime->pnum <<"\n";
return true;
} // 'lastPrime' is now a dangling pointer because it holds the address
// of 'addPrime' whose lifetime has ended.
lastPrime->pprime=&addPrime;
lastPrime=&addPrime;
cout在添加或删除无害代码时出现的问题几乎总是由错误指针造成的;有时它会覆盖一些重要的东西,有时它会覆盖一些无关紧要的东西
在这种情况下,错误指针来自于获取addPrime
的地址并保存它。在块的末尾,addPrime
消失,指向它的指针变为无效。在添加或删除无害代码时出现的问题几乎总是由错误指针造成的;有时它会覆盖一些重要的东西,有时它会覆盖一些无关紧要的东西
在这种情况下,错误指针来自于获取addPrime
的地址并保存它。在块的末尾,addPrime
消失,指向它的指针变得无效。谢谢——我有点理解。动态分配意味着在我释放内存之前不会重写它。本地非动态分配意味着我的内存可能会被重写,即使我有一个指向它的指针?谢谢——我有点理解。动态分配意味着在我释放内存之前不会重写它。本地非动态分配意味着我的内存可能被重写,即使我有一个指向它的指针?
lastPrime->pprime=&addPrime;
lastPrime=&addPrime;
cout << "n:" << lastPrime->pnum <<"\n";
return true;
} // 'lastPrime' is now a dangling pointer because it holds the address
// of 'addPrime' whose lifetime has ended.