C ++中容器的内存分配

时间:2012-08-24 21:05:24

标签: c++ memory memory-management

我对C ++上的容器内存分配有疑问。

查看多线程应用程序的伪代码(假设它是在c ++中)。我在main方法中声明了vector对象。然后我运行一个线程并将此对象传递给线程。该线程在另一个处理器中运行。现在,我将100000个元素插入到矢量中。

typedef struct myType
{
    int a;
    int b;
}myType;

ThreadRoutine()
{
    Run Thread in processor P;
    insert 1000000 elements into myTypeObject
}

int main()
{
    std::vector<myType> myTypeObject;
    CALLTHREAD and pass myTypeObject
} 

我想知道为100000个元素分配内存的位置:       - 从主要本身       - 从线程

我问这个的原因是因为,我想在不同的处理器中运行该线程。我的机器是NUMA机器。因此,如果从线程分配内存,它将位于线程的本地内存库中。但是如果从main分配内存,它将从主线程的本地内存库中分配。

根据我的直觉,我会说内存只在线程中分配。请让我知道你的想法。

1 个答案:

答案 0 :(得分:1)

将从ThreadRoutine()调用重新分配 - 因此,无论哪个线程调用它(在您的示例中为辅助节点)。

当然,如果你想避免在辅助线程上调整大小,你可以在传递它之前在主线程上reserve