草庐IT

c# - 您可以使用 List<List<struct>> 绕过 2gb 对象限制吗?

我在c#中遇到了2gb对象限制(由于某些烦人的原因,这甚至适用于64位),并且有大量结构(预计总大小为4.2gig)。现在显然使用List会给我一个大小为4.2gb的列表,但会使用由较小列表组成的列表,这些列表又包含一部分结构,允许我跳过这个限制吗?我的理由是,它只是CLR中的一个硬编码限制,它阻止我在我的64位平台上实例化一个9gig对象,它与系统资源完全无关。列表和数组也是引用类型,因此包含列表的列表实际上只包含对每个列表的引用。因此没有一个对象超过大小限制。这有什么不可行的原因吗?我现在会亲自尝试,但我手头没有内存分析器来验证。 最佳答案

c# - 您可以使用 List<List<struct>> 绕过 2gb 对象限制吗?

我在c#中遇到了2gb对象限制(由于某些烦人的原因,这甚至适用于64位),并且有大量结构(预计总大小为4.2gig)。现在显然使用List会给我一个大小为4.2gb的列表,但会使用由较小列表组成的列表,这些列表又包含一部分结构,允许我跳过这个限制吗?我的理由是,它只是CLR中的一个硬编码限制,它阻止我在我的64位平台上实例化一个9gig对象,它与系统资源完全无关。列表和数组也是引用类型,因此包含列表的列表实际上只包含对每个列表的引用。因此没有一个对象超过大小限制。这有什么不可行的原因吗?我现在会亲自尝试,但我手头没有内存分析器来验证。 最佳答案

c++ - 当您使用多重继承时,静态转换何时安全?

我发现自己处于一种我知道某物是什么类型的情况。类型是三个(或更多)继承级别之一。我调用返回B*的工厂,但是T是类型的最高级别(如果我的代码知道它是什么)或第二级别。无论如何,我在模板中做了一个static_cast,这是错误的做法。我的问题是我什么时候可以安全地进行静态转换?有没有这样的时候?我在这种情况下这样做是因为当我不小心将T作为古怪的东西(已经发生并且)动态转换忽略(并返回null)时,我宁愿得到编译错误。但是,当我知道正确的类型时,指针没有调整,导致我的指针不好。我不知道为什么在这种情况下允许静态转换。什么时候可以安全地使用static_cast进行向下转换?有没有什么情况?

c++ - 当您使用多重继承时,静态转换何时安全?

我发现自己处于一种我知道某物是什么类型的情况。类型是三个(或更多)继承级别之一。我调用返回B*的工厂,但是T是类型的最高级别(如果我的代码知道它是什么)或第二级别。无论如何,我在模板中做了一个static_cast,这是错误的做法。我的问题是我什么时候可以安全地进行静态转换?有没有这样的时候?我在这种情况下这样做是因为当我不小心将T作为古怪的东西(已经发生并且)动态转换忽略(并返回null)时,我宁愿得到编译错误。但是,当我知道正确的类型时,指针没有调整,导致我的指针不好。我不知道为什么在这种情况下允许静态转换。什么时候可以安全地使用static_cast进行向下转换?有没有什么情况?

c++ - 当 C++ 流打开失败时,您可以获得特定的错误情况吗?

当C++流打开失败时,有什么方法可以获取特定的错误情况?也就是说,它是否因为文件不存在或权限错误等而失败。基本上我正在寻找与普通C中fopen()的errno等效的功能。GCC似乎正确设置了errno,但这似乎不是C++标准所要求的,我无法确定这只是他们实现流的方式的产物,还是故意的特性(因此我不知道是否会跨版本持续存在)。有没有办法可靠地获取此信息,无论是在标准C++中还是在一个或多个主要编译器中非偶然? 最佳答案 出于一般原因,您可以查看ios标志(badbit、eofbit、failbit、goodbit)。使用ios::ba

c++ - 当 C++ 流打开失败时,您可以获得特定的错误情况吗?

当C++流打开失败时,有什么方法可以获取特定的错误情况?也就是说,它是否因为文件不存在或权限错误等而失败。基本上我正在寻找与普通C中fopen()的errno等效的功能。GCC似乎正确设置了errno,但这似乎不是C++标准所要求的,我无法确定这只是他们实现流的方式的产物,还是故意的特性(因此我不知道是否会跨版本持续存在)。有没有办法可靠地获取此信息,无论是在标准C++中还是在一个或多个主要编译器中非偶然? 最佳答案 出于一般原因,您可以查看ios标志(badbit、eofbit、failbit、goodbit)。使用ios::ba

c++ - 您可以用来学习编程着色器的最佳工具是什么?

我最近一直在做一些DirectX10的工作,我希望转向DirectX11和ShaderModel5.0。过去我写过一些非常简单的着色器,我希望能拓宽我的视野并尝试更复杂的着色器。我的问题是多方面的:目前最好的着色器编程工具是什么?我只使用了VisualStudio和SOMEFXComposer-阅读:足以打开并查看它。gfx卡的品牌是否影响您可以编程的着色器类型?我问的原因是Nvidia似乎有更好的工具,而ATI似乎取消了RenderMonkey。我好像没看到有替代品?我错了吗?与#1的问题类似,但如果您只是打算编写DirectX着色器而不是特定于供应商,您可以使用跨供应商工具吗?如果

c++ - 您可以用来学习编程着色器的最佳工具是什么?

我最近一直在做一些DirectX10的工作,我希望转向DirectX11和ShaderModel5.0。过去我写过一些非常简单的着色器,我希望能拓宽我的视野并尝试更复杂的着色器。我的问题是多方面的:目前最好的着色器编程工具是什么?我只使用了VisualStudio和SOMEFXComposer-阅读:足以打开并查看它。gfx卡的品牌是否影响您可以编程的着色器类型?我问的原因是Nvidia似乎有更好的工具,而ATI似乎取消了RenderMonkey。我好像没看到有替代品?我错了吗?与#1的问题类似,但如果您只是打算编写DirectX着色器而不是特定于供应商,您可以使用跨供应商工具吗?如果

c++ - 您多久实现一次三巨头?

我只是在思考这里的问题数量,要么是关于“三大”(复制构造函数、赋值运算符和析构函数),要么是关于由于它们没有正确实现而导致的问题,当我想到我可以不记得我上次自己实现它们是什么时候了。对我最活跃的两个项目的快速grep表明,我仅在大约150个类(class)中的一个类(class)中实现了所有三个。这并不是说我没有实现/声明其中的一个或多个-显然基类需要一个虚拟析构函数,并且我的大量类禁止使用私有(private)复制ctor和赋值操作习语进行复制。但是完全实现了,有一个单独的类,它会做一些引用计数。所以我想知道我在这方面是否不寻常?您多久实现一次所有这三个功能?您实现它们的类有什么模式

c++ - 您多久实现一次三巨头?

我只是在思考这里的问题数量,要么是关于“三大”(复制构造函数、赋值运算符和析构函数),要么是关于由于它们没有正确实现而导致的问题,当我想到我可以不记得我上次自己实现它们是什么时候了。对我最活跃的两个项目的快速grep表明,我仅在大约150个类(class)中的一个类(class)中实现了所有三个。这并不是说我没有实现/声明其中的一个或多个-显然基类需要一个虚拟析构函数,并且我的大量类禁止使用私有(private)复制ctor和赋值操作习语进行复制。但是完全实现了,有一个单独的类,它会做一些引用计数。所以我想知道我在这方面是否不寻常?您多久实现一次所有这三个功能?您实现它们的类有什么模式