さて、これはかなり奇妙なものです。
私は、malloc を使用して C でメモリを動的に割り当ててから、リンクしたライブラリ内で定義されたメソッドを呼び出しています。
私が得ている問題は、メソッドを呼び出した後にメモリが解放されないことですが、そのメソッドを呼び出す前にメモリを解放しても問題ありません。
コード:
unsigned char* pData = (unsigned char*)malloc(sizeof(unsigned char)*(sLen + 1));
pData[0] = CRITICAL_ERROR; // defined as 2
memcpy(pData+1, pBuf, sLen);
libwebsocket_write(pLws, pData, sLen + 1, LWS_WRITE_BINARY);
free(pData);
を呼び出すと、未処理の例外がスローされますfree(pData)
。
アプリケーションと同じ OS、アーキテクチャ、およびビルド構成 (リリース) に対してライブラリをコンパイルしようとしましたが、うまくいきませんでした。
編集: libwebsocket_write 呼び出しの前後でポインター アドレスを比較したところ、同じです。