-2
私はstd::unordered_map
をテストしていましたが、プロジェクトで実際に使用する前に慣れていました。ポインタがstd :: unordered_mapの何かを指しているときのセグメンテーションフォールト
私はキーとしてポインタを使用すると、キーとして使用されているポインタが実際に値を指しているときにsegfaultエラーが発生することに気付きました。私はそのコメント行のコメントを外した場合
#include <unordered_map>
#include <stdio.h>
int main() {
std::unordered_map<int*, int> map;
int* key;
//*key = 18;
map[key] = 1893;
printf("%d\n", map[key]);
}
は今、私は、セグメンテーションフォールトエラーを取得し、私はそれがcommmentedままにしながら、すべてが完璧に動作します:これは私のコードです。なぜこれが起こるのですか?
あなたはポインタにメモリを割り当てるのを忘れて:あなたは本当に
key
がポインタになりたい場合はは
int key; key = 18;
、かのいずれかを使用します。 'int * key = new int' – PRP
コメント行は初期化されていないポインタをデリファレンスします。どのように動作すると思いますか? –
この[ポインタチュートリアル](http://www.cplusplus.com/doc/tutorial/pointers/)を見てください。これはあなたが知る必要があるすべて、なぜこれがうまくいかないかを説明します。 – muXXmit2X