編集: うーん...それは非常に興味深いです。設定をポインタにして渡しました。美しく働きました。ということで、これで解決です。答えに興味のある人のために開いたままにします。
FMod でメモリ ストリームからサウンドを作成する際に問題が発生しています。FMod に同梱されている loadfrommemory の例を見て、それに従いました。まず、私が使用しているコード...
CSFX::CSFX(CFileData *fileData)
{
FMOD_RESULT result;
FMOD_CREATESOUNDEXINFO settings;
settings.cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
settings.length = fileData->getSize();
_Sound = 0;
std::string temp = "";
for (int i = 0; i < fileData->getSize(); i++)
temp += fileData->getData()[i];
result = tempSys->createSound(temp.c_str(), FMOD_SOFTWARE | FMOD_OPENMEMORY, &settings, &_Sound);
}
このままだとtempSys->createSound()でアクセス違反になる。tempSys は、ファイルからサウンドを作成するときに機能するため、有効であることを確認しました。また、コンテンツをファイルに書き込むことで、データの char * が有効であることを確認しました。ファイルは、Media Player で開くことができました。設定に問題があるような気がします。そのパラメーターを 0 に変更すると、プログラムは爆発せず、result = FMOD_ERR_INVALID_HANDLE になります (3 番目のパラメーターが 0 であることを考えると、これは理にかなっています)。私が間違っていることは何か分かりますか?
また、std::string の使用を無視してください。テスト目的で使用していました。