我對C++上的容器的內存分配有一個問題。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
}
我想知道的內存將被分配給10萬組的元素: - 從主本身 - 從線程
的原因,因爲我要運行請問這是線程在不同的處理器中。而我的機器是NUMA機器。所以如果內存是從線程分配的,它將在線程的本地內存中。但是如果內存是從main分配的,它將從主線程的本地內存庫分配。
根據我的直覺,我會說內存只在線程中分配。請讓我知道你的想法。
請注意,在C++中,您可以只寫'struct myType {...};'。 –
您確定標準分配器僅爲特定線程分配內存嗎?因爲這聽起來不正常,而且簡要地看一下「NUMA是什麼」,這讓我覺得這不是NUMA正常工作的方式。 –
如果我對NUMA有所瞭解,我會認爲最好的答案是編寫一個自定義分配器,並讓該向量使用分配器。那麼你永遠不必擔心哪個線程持有它。或者其他的東西。 –