ダブルポインターを返すことになっている関数があります。この例では文字配列であるデータへのポインターのアドレスを返すことになっています
元のデータはコンストラクターのパラメーターとして送信されます
Classname::Classname(void* fdata);
次に、frame_data と呼ばれる void* データ メンバにコピーされます。
frame_data = fdata;
ダブルポインターを返す関数は次のように定義されます。
void** Classname::data(){
return &frame_data;
}
最後に、後で data() を呼び出す関数
std::sprintf(*(char**)classn.data(), "LOOP No: %d", loop);
そして、これがプログラムのセグメンテーション違反です。明らかに何かが間違っていますが、問題がどこにあるのかわかりません。このプログラムでは、data() が二重ポインターを返すという事実と同様に、sprintf 行は変更できません。 ?