0

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

查看多线程应用程序的伪代码(假设它是 c++ 语言)。我在 main 方法中声明了向量对象。然后我运行一个线程并将这个对象传递给线程。该线程在另一个处理器中运行。现在,我在向量中插入 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机器。因此,如果内存是从线程分配的,它将在线程的本地内存库中。但是如果内存是从主线程分配的,它将从主线程的本地内存库中分配。

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

4

1 回答 1

1

重新分配将被调用ThreadRoutine()——所以,无论哪个线程调用它(在你的例子中是次要的)。

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

于 2012-08-24T21:06:23.777 回答