这是我的一本书中的一个问题(没有附加答案),我已经思考了几天了。答案仅仅是因为 C++ 代码最终会崩溃,因为它在每次迭代后都会创建一个垃圾内存单元吗?
考虑以下 Java 和 C++ 代码片段,它们是基于 GUI 的应用程序的两个版本的一部分,它收集用户偏好并使用它们来组装命令及其参数。方法/函数 getUserCommandSpecification() 返回一个表示命令代码及其参数的字符串。返回的字符串用于构建所需的命令,然后执行该命令。
假设如下:
(i) 在 Command 对象的 while 循环中创建后(在 Java 情况下由 cmd 引用或在 C++ 情况下由 cmd 指向),不再引用或使用指向生成对象的引用/指针 cmd。
(ii) 应用程序还定义了一个类 Command 及其方法/函数 execute()。
一种。下面详述的两个代码版本中的哪一个最终会崩溃。
湾。解释为什么一个程序版本崩溃而另一个没有崩溃。
Java 代码
...
while (true) {
String commandSpecification = getUserCommandSpecification();
Command cmd = new Command(commandSpecification);
cmd.execute();
}
...
C++ 代码
...
while (true) {
string commandSpecification = getUserCommandSpecification();
Command* cmd = new Command(commandSpecification);
cmd -> execute();
}
...