我想我可能会在这里造成内存泄漏:
void commandoptions(){
cout<< "You have the following options: \n 1). Buy Something.\n 2).Check you balance. \n3). See what you have bought.\n4.) Leave the store.\n\n Enter a number to make your choice:";
int input;
cin>>input;
if (input==1) buy();
//Continue the list of options.....
else
commandoptions(); //MEMORY LEAK IF YOU DELETE THE ELSE STATEMENTS!
}
inline void buy(){
//buy something
commandoptions();
}
假设 commandoptions 在程序第一次运行时刚刚执行。用户选择“1”,表示 buy() 子程序由 commandoptions() 子程序执行。
buy() 执行后,它再次调用 commandoptions()。
第一个 commandoptions() 会返回吗?还是我只是造成了内存泄漏?
如果我创建一个只调用自身的子例程,它将导致堆栈溢出,因为该子例程的其他“循环”永远不会退出。我在这里做/接近做吗?
请注意,我inline
在购买时使用了关键字...这有什么不同吗?
我很高兴地问我的教授,他似乎没有空。:/
编辑:我不敢相信我没有想到使用循环,但是谢谢,我学到了一些关于我的术语的新东西!