我有以下程序:
#include<iostream>
#include<map>
using namespace std;
int *ar;
int main(int argc, const char *argv[])
{
int N,i;
map <int , int> W;
ar = new int[N+1];
cin >> N;
for (i = 1; i <= N; i++) {
cin >> ar[i];
}
W[ar[N]]= -1;
return 0;
}
我给程序以下输入:
6
1 1 2 2 3 4
如果我使用 g++ -O 选项(没有优化)编译上面的代码,我会在该行得到 segabrt
W[ar[N]]= -1;
两个问题:
是不是 ar[] 没有被 new 分配内存?如果我用某个常数值替换该行,我会得到同样的错误。
W[4] = -1;
地图是否需要某种初始化?它通常无需初始化即可为我工作。