错误、漏洞、问题 - 页 1892

 
fxsaber:
另一个问题。
胎面的性能。
 
Renat Fatkhullin:
踏实的工作。
如果它是一个笑话,它是有趣的)),如果不是,请解释一下什么是编程中的踩点。
 
Konstantin:
请解释什么是编程中的保护器
使反编译器消失的东西
 
Renat Fatkhullin:

是的,这里有一个例子,证明了你的问题。

和输出。

首先,我们从下往上检查未解决的铸币,得到NULL。这一点是正确的。

然后我们创建一个CLASS2对象,把它的引用分配给它的父类(这里要理解的是,动态环境知道CLASS2对象的原始类型是存储在它的元信息中)。然后(只是你的问题)从引用CLASS1到CLASS2的动态投递(根据源对象的元信息检查转换权)。

我们检查铸造的结果并将其写入变量i = 1。最后我们输出i的值,指的是最初创建的对象

所有的工作都是正确的,并且符合规范(包括C++本身的dynamic_cast规范)。

谢谢你的澄清。 现在MQL中的类型转换已经有点清楚了))但是,如果我们在任何情况下都不能从下往上投,而我们可以不从上往下,那么创建dynamic_cast 的目的是什么?也许这里有一些微妙之处,而我却不明白?
 
Konstantin:
谢谢你的澄清,我在MQL中有点明白了,因为类型转换))。但我不知道,如果我们不能从下往上投,而我们可以不从上往下,那么我们为什么需要dynamic_cast?也许这里有一些微妙之处,而我却不明白?

请重新阅读代码和我的解释。

它还演示了动态铸造如何根据最初创建的对象的 元信息,安全地从下往上提升铸造。如果一个对象是从一个后裔创建的,然后转换为一个父类引用,那么基于元信息(原始对象实际上是一个后裔),你可以安全地将该引用转换为一个后裔。

通常在各种子类的对象被堆积在对父类的引用数组/列表中时使用,然后检索并安全地投向一个或其他子类。如果转换的结果是NULL,这意味着该对象没有被子代取走,不应该被处理。

 
Renat Fatkhullin:

请重新阅读代码和我的解释。

它还演示了动态铸造如何根据最初创建的对象的 元信息,安全地从下往上提升铸造。如果一个对象是从一个后裔创建的,然后转换为一个父类引用,那么基于元信息(原始对象实际上是一个后裔),你可以安全地将该引用转换为一个后裔。

通常在各种子类的对象被堆积在对父类的引用数组/列表中时使用,然后检索并安全地投向一个或其他子类。如果转换的结果是NULL,那么该对象就不是由后代获取的,不应该被处理。

我读了代码,但这不就是。

CLASS2 *my_ptr2=dynamic_cast<CLASS2 *>(my_ptr);

并不类似于此。

CLASS2 *my_ptr2=(CLASS2*)my_ptr;

我无法掌握使用动态_cast 的精妙之处,只是当使用动态_cast 执行代码时,我们不会得到错误,因为动态_cast 在出错时返回NULL

 
Konstantin:

我读了代码,但这不就是。

并不类似于此。

我无法掌握使用dynamic_cast 的非常微妙的地方,只是在执行使用dynamic_cast 的代码时,我们不会出现错误,因为dynamic_cast 在出现错误时返回NULL

我建议在谷歌上阅读C++ dymanic_cast规范。

这是一件微不足道的事情。

 
当发放PC资源时,在启动游戏时出现崩溃--游戏《使命召唤:黑色行动III》崩溃--1名特工被卷入代理人的优先权是最小的--内存消耗了3.5G的16--一般来说应该没有问题。使用非活性制剂,游戏玩得很好。你有没有测试过代理与其他程序的兼容性?
 
-Aleks-:
当发放PC资源时,在游戏开始时出现崩溃--游戏《使命召唤:黑色行动III》崩溃--涉及1名特工代理人的优先权很小--内存消耗了3.5GB的16--一般来说,应该没有问题。使用非活性制剂,游戏玩得很好。一般来说,对代理与其他程序的兼容性进行测试?

出于某种原因,我马上想到,也许是游戏中的错误,并把它与64位机器上工作的特殊性联系起来,当程序被加载到地址空间>4GB时。
 
Sergey Dzyublik:

出于某种原因,我立即想到,也许是游戏中的一个错误,并把它与在64位机器上工作的特殊性联系起来,当程序被加载到地址空间> 4 GB时

也就是说,要检查这个假设,我需要把内存填到4GB以上并运行游戏--等我儿子玩的时候我再试试。