小编Cof*_*ars的帖子

Visual Studio 2010中unique_pointer的奇怪行为

我试着写这堂课

#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方法?

c++ visual-studio-2010 unique-ptr visual-c++ c++11

12
推荐指数
2
解决办法
1409
查看次数

C中计算有效的三维数组

我试图在数值上解决一组三维偏微分方程.在每个方程中,一个点中未知的下一个值取决于最近点中每个未知的当前值.

为了编写一个有效的代码,我需要保持三维中的点靠近(一维)内存空间,这样每个值只从内存中调用一次.

我在考虑使用octtrees,但我想知道是否有人知道更好的方法.

c arrays numerical multidimensional-array

7
推荐指数
2
解决办法
1386
查看次数

在分析弱引用时阻止垃圾收集器

我正在尝试使用WeakReference,我正在编写一个代码,用于在返回对对象的强引用之前检查弱引用是否有效.

if (weakRef.IsValid)
    return (ReferencedType)weakRef.Target;
else
    // Build a new object
Run Code Online (Sandbox Code Playgroud)

我应该如何阻止GC在"IsValid"和"Target"调用之间收集对象?

.net c# garbage-collection weak-references

5
推荐指数
1
解决办法
261
查看次数

如何在多线程环境中使用旧的单线程C++库

我有一个旧的C++库,专为在单线程环境中使用而设计.

该库公开了用于初始化的接口,这些接口改变了库的内部数据结构,以及用法,它只读取数据并进行计算.

我的目标是在Windows多线程应用程序中使用此库,其中不同的线程调用使用不同数据初始化的dll实例.

假设重写dll以允许多线程将是禁止的,是否有一些方法让DLL的多个实例存在于同一进程中,具有单独的内存空间,或通过其他方式获得类似的结果?

c++ windows multithreading legacy-code

4
推荐指数
2
解决办法
1259
查看次数