我试着写这堂课
#include <memory>
class ContainerUnique
{
public:
ContainerUnique(void);
~ContainerUnique(void);
private:
std::unique_ptr<UniqueElement> u;
};
Run Code Online (Sandbox Code Playgroud)
其中UniqueElement是在别处定义的POD类.我现在定义构造函数体如下:
ContainerUnique::ContainerUnique(void)
{
auto tmp = new UniqueElement(1);
this->u(tmp); // u is a unique_ptr<UniqueElement>. Should this call compile?
}
Run Code Online (Sandbox Code Playgroud)
并且它没有例外地符合.运行程序我发现在ContainerUnique
调用构造函数之后,u
包含一个空指针.
这是预期的行为吗?我实际上调用了什么unique_ptr方法?
我试图在数值上解决一组三维偏微分方程.在每个方程中,一个点中未知的下一个值取决于最近点中每个未知的当前值.
为了编写一个有效的代码,我需要保持三维中的点靠近(一维)内存空间,这样每个值只从内存中调用一次.
我在考虑使用octtrees,但我想知道是否有人知道更好的方法.
我正在尝试使用WeakReference,我正在编写一个代码,用于在返回对对象的强引用之前检查弱引用是否有效.
if (weakRef.IsValid)
return (ReferencedType)weakRef.Target;
else
// Build a new object
Run Code Online (Sandbox Code Playgroud)
我应该如何阻止GC在"IsValid"和"Target"调用之间收集对象?
我有一个旧的C++库,专为在单线程环境中使用而设计.
该库公开了用于初始化的接口,这些接口改变了库的内部数据结构,以及用法,它只读取数据并进行计算.
我的目标是在Windows多线程应用程序中使用此库,其中不同的线程调用使用不同数据初始化的dll实例.
假设重写dll以允许多线程将是禁止的,是否有一些方法让DLL的多个实例存在于同一进程中,具有单独的内存空间,或通过其他方式获得类似的结果?
c++ ×2
.net ×1
arrays ×1
c ×1
c# ×1
c++11 ×1
legacy-code ×1
numerical ×1
unique-ptr ×1
visual-c++ ×1
windows ×1