Хорошо, так что это довольно странно.RtlFreeHeap Недействительный адрес при освобождении памяти после передачи указателя на внешний метод библиотеки
Я динамически выделяю память на C с помощью malloc, а затем вызываю метод, определенный внутри библиотеки, с которой я связан.
Проблема, которую я получаю, не может быть освобождена после того, как я вызвал метод, но это нормально, если я освобожу его до вызова этого метода.
Код:
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)
.
Я пробовал компилировать библиотеку с той же ОС, arch и строить конфигурацию (Release) как мое приложение, но это не сработало.
EDIT: Я просто сравнил адрес указателя до и после вызова libwebsocket_write, и это то же самое.