次のプログラムがあります。
#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;
2 つの質問:
ar[] が new によってメモリを割り当てられていないということですか? 行を定数値で置き換えると、同じエラーが発生します。
W[4] = -1;
マップに必要な初期化はありますか? 通常、初期化なしで動作します。