對不起,但我想現在我已經理解了堆棧和堆,但顯然我錯了。我宣佈堆中的每個對象,但都是一樣的,當第一梅託德做我可以通過的std ::法院的時間是ZERO看,那就是:儘管在堆上分配了值,但數值被破壞了
startTPtr: 00:00:00
當時間的函數內的印刷好吧,但不知何故它會在函數結束後被銷燬。
我錯過了這裏至關重要的東西嗎?我應該從函數返回指針嗎?
在此先感謝!
int main() {
Clock *_clockPtr = new Clock();
MyTime *_startTPtr = new MyTime();
MyTime *_endTPtr = new MyTime();
char *ch = new char[100];
start_app(_startTPtr, _endTPtr, _clockPtr, ch);
cout << "startTPtr: " << *_startTPtr << endl;
return 0;
}
void start_app(MyTime *_startTPtr, MyTime *_endTPtr, Clock *clock, char *ch) {
cout << "Press ENTER to start and finish!";
int newLine = 0;
for (std::string line; std::getline(std::cin, line);) {
if (newLine == 0) {
std::cout << "... ";
MyTime* myTime1 = new MyTime(clock->give_me_the_time());
_startTPtr = myTime1;
cin >> ch;
} else {
MyTime* myTime2 = new MyTime(clock->give_me_the_time());
_endTPtr = myTime2;
break;
}
cout << "startTPtr: " << *_startTPtr << endl;
newLine++;
}
}
[按引用傳遞動態無功的指針(HTTP的可能重複: //stackoverflow.com/questions/18722208/passing-pointer-of-dynamic-var-by-reference)或http://stackoverflow.com/questions/23250284/scope-of-heap-memory – hmjd