提问人:Narcisismo 提问时间:9/4/2023 更新时间:9/4/2023 访问量:32
初始化 2D 向量时出现 sysmalloc 断言错误
sysmalloc assertion error when initializing 2D vector
问:
有时,当使用 'std::vectorstd::vector<int> temp(num_vertices_);“' 初始化临时 2D 向量时,c++ 会给我一个 sysmalloc 断言错误。
void Grafo::remove_vertice(int v)
{
for (int i = 0; i < adj[v].size(); i++)
{
num_arestas_--;
}
adj[v].clear();
for (int i = 0; i < adj.size(); ++i)
{
for (int j = 0; j < adj[i].size(); ++j)
{
if (adj[i].size() == 1)
{
if (adj[i][j] > v)
{
adj[i][j] = adj[i][j] - 1;
break;
}
if (adj[i][j] == v)
{
adj[i].erase(adj[i].begin() + j);
}
}
else
{
for (auto x : adj[i])
{
if (adj[i][j] > v)
{
adj[i][j] = adj[i][j] - 1;
break;
}
if (adj[i][j] == v)
{
adj[i].erase(adj[i].begin() + j);
}
}
}
}
}
adj[v].insert(adj[v].begin(), -1);
num_vertices_--;
std::vector<std::vector<int>> temp(num_vertices_);
int lacoTemp = 0;
for (int i = 0; i < adj.size(); i++)
{
if (adj[i].empty())
{
lacoTemp++;
}
for (int x : adj[i])
{
if (x != -1)
{
temp[lacoTemp].insert(temp[lacoTemp].begin(), x);
lacoTemp++;
}
}
}
adj.clear();
adj.resize(num_vertices_);
for (int i = 0; i < adj.size(); i++)
{
adj[i] = temp[i];
}
}
我的输入: 8 12
R 0 7
E
我 4 1
问 5
N
我 5 4
R 0 6
E
问 1
Grafo: malloc.c:2617: sysmalloc: 断言 '(old_top == initial_top (av) && old_size == 0) ||((无符号长) (old_size) >= MINSIZE && prev_inuse (old_top) && ((无符号长) old_end & (pagesize - 1)) == 0)' 失败。
答: 暂无答案
上一个:如何找到指针错误的来源
下一个:添加/删除链表中的第一个元素
评论
for (auto x : adj[i]) { ... adj[i].erase(...) }
x
v
adj[i].erase(std::remove_if(adj[i].begin(), adj[i].end(), [&](auto &val) { return val == v; }). adj[i].end());
for