- 253 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 20:32:10 ]
- //void* のポインタキャスト行ったりきたり実験
std::vector<std::string> vec2; vec2.push_back("hoge" ); void *vo=(void *)&vec2; //void*型、準備OK //ここから、スレッドの関数で受け取ってから、std::vector<std::string>に戻す。 std::vector<std::string> *vec=(std::vector<std::string> *)vo;//キャストしました。 std::vector<std::string> vec3=*vec; cout << vec3[0].c_str()<< endl; cout << (*vec)[0].c_str()<< endl;//おまけ。std::vector<std::string>にしなくても、これでもいい。 これは、正常に動きました。キャストの仕方とか大丈夫みたいなので、 参照しようと思ったデータが無いみたいです。 >>251 >多分スタック上に確保したvectorのアドレスそのまま >渡してるだろ。それじゃクラッシュするのは当たり前だ。 スタック?検索すると、 ”処理中のデータや戻りアドレスなどを一時的に退避する場合に使うことが多い” ってありました。 vectorは使用しなくなると自動的に、 開放しちゃうっていう、あれのことでよかったでしょうか?
|

|