我有一堆整数向量和整数向量数组,必须在每次迭代中清除和更新。
我遇到内存泄漏错误,例如" munmap_chunk()无效指针" " free():下一个大小无效(快):" "双重免费或腐败"就像我一样 我无法有效地清理/管理记忆。
程序:
vector<vector<int>> work_queue;
vector<int> global_graph[NUM_OF_NODES];
vector<int> global_L0;
vector<int> global_L1;
vector<int> global_L2;
main thread
-----------
while(!exit) {
// update output using results stored in global vector
//clear workqueue
for (int m = 0; m < NUM_OF_WORKERS; m++) {
work_queue[m].clear();
}
// update workqueue using updated results
for (int m = 0; m < NUM_OF_WORKERS; m++) {
work_queue.push_back(row);
}
for (int i = 0; i < source_vertices.size(); i++) {
work_queue[i % NUM_OF_WORKERS].push_back(source_vertices[i]);
}
// clear global vectors - free memory
global_L0.clear();
global_L1.clear();
global_L2.clear();
//call worker threads
}
All worker threads execute the below function
--------------------------------------------
void * worker() {
vector<int> local_graph[NUM_OF_NODES];
vector<int> local_L0;
vector<int> local_L1;
vector<int> local_L2
while (1) {
// clear all local vectors; free memory
local_L0.clear();
local_L1.clear();
local_L2.clear();
while (!work_queue[workerId].empty) {
// do the calculations based on global data and update local vectors
// threads synchronize and update global vectors
// based on local computations on local vectors
// when done loop through
}
//check_thread for exit condition() and break if required;
}
}
我在这里缺少什么?为什么这个程序结构中存在内存泄漏? 感谢您的帮助。谢谢