gpt4 book ai didi

c++ - C++中容器的内存分配

转载 作者:行者123 更新时间:2023-11-28 07:58:29 26 4
gpt4 key购买 nike

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

查看多线程应用程序的伪代码(假设它是用 C++ 编写的)。我在 main 方法中声明了 vector 对象。然后我运行一个线程并将这个对象传递给线程。该线程在另一个处理器中运行。现在,我向 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中分配的,就会从主线程的local memory bank中分配。

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

最佳答案

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

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

关于c++ - C++中容器的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com