【发布时间】:2019-08-06 04:06:32
【问题描述】:
我认为我在代码中所做的事情是合法的,但它显示了运行时错误。为什么?
int main() {
int q;
cin>>q;
while(q--)
{
int n, start;
vector<int> adj[n];
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
int x;
cin>>x;
//if(x==1) start = i;
adj[i].push_back(x);
}
}
}
//code
return 0;
}
运行时错误: 来自 abort(3) (SIGABRT) 的运行时错误中止信号
【问题讨论】:
-
首先,数组在 C++ 中必须具有恒定大小。其次,
n没有在任何地方初始化。 -
你创建了一个没有值的变量
n,然后尝试创建一个数组。超级未定义的行为 -
部分原因是your code is ill-formed.
-
编译时应使用最高警告级别。 gcc 警告
warning: ‘n’ may be used uninitialized in this function [-Wmaybe-uninitialized]
标签: c++