特定の文字列を返す関数を含むDLLをCで作成する必要があります(文字列を表すcharバッファーへのポインターとして)。DLL内の関数は繰り返し呼び出され、異なるスレッドで実行されます。
正しいことは、関数にcharバッファーを割り当て、戻りバッファーが使用された後、呼び出し元の環境で割り当てられたバッファーを解放することです。
// DLL function
char *getString() {
char *buffer = (char *)malloc(STRING_LEN);
// fill buffer with some string
return buffer;
}
残念ながら、dll内の関数を呼び出すプログラミング環境には、返されるバッファを解放するメカニズムがないため、メモリリークが発生します。
このような状況でメモリリークを発生させずに文字列を返すにはどうすればよいですか?