非常にC++で経験していない、私は次のことを持っている:ポインタが無効です - なぜですか?
void read_image(vector<unsigned char>* buffer) {
buffer = new vector<unsigned char>(2048);
}
int main(int argc, char ** argv) {
vector< unsigned char > *buffer;
read_image(buffer);
delete buffer; // gives invalid pointer at run-time
return 0;
}
これはコードの関連部分のみで、基本的に私はread_image()
にポインタbuffer
を初期化したいです。実行時にヒープを解放しようとしているときにこれを取得しています:
*** glibc detected *** ./main: free(): invalid pointer: 0x00007fff0648556c ***
私のアプローチには何が問題なのですか?
はそれはそれはポインタであるにも関わらず、参照する必要があります - あなたの条件についての私の推測が正しければ
あなたはこのような何かをすべきか? – rdoubleui
本当の質問は、なぜ彼が動的に 'ベクトル'を割り当てるのかということです。動的に 'ベクトル 'を割り当てることは意味があるケースはごくわずかです。 –
@rdoubleui呼び出し関数内のポインタを変更する場合は、そのポインタへの参照を渡す必要があります。ポインタは、その点で他のデータ型と変わらない。 –