C++ vs Java:无限循环创建对象只会崩溃C++
2022-09-02 22:49:12
这是我的一本书中的一个问题(没有附带答案),我已经考虑了几天了。答案是否只是C++代码最终会崩溃,因为它在每次迭代后都会创建一个垃圾存储单元?
请考虑以下 Java 和 C++ 代码片段,它们是基于 GUI 的应用程序的两个版本的一部分,它收集用户首选项并使用它们来组装命令及其参数。方法/函数 getUserCommandSpecification() 返回一个表示命令代码及其参数的字符串。返回的字符串用于构建所需的命令,然后执行该命令。
假设:
(i) 在 while 循环中创建 Command 对象后(在 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();
}
...