У меня есть поток, который считывает данные многоадресных и обновляет определенные структуры данныхнарушения прав доступа чтение местоположения в C++
и другой поток, который обрабатывается Chai 3d библиотеки
, когда я просто запустить свой код библиотеки он отлично работает ,
когда я бег у нитки и
я получаю нарушение прав доступа в одном из подпрограммы внутри кода chai3d.
мой нить код
unsigned int __stdcall ThreadFunc(void* data)
{
char *timeOld;
int ID;
while(1)
{
char *position = _com_util::ConvertBSTRToString(cpi->getData());
ID = cpi->getMulticastDataID();
char* timeNew = _com_util::ConvertBSTRToString(cpi->getTime());
if(timeFirst == true)
{
timeOld = new char[strlen(timeNew) + 1];
strcpy(timeOld,timeNew);
timeFirst = false;
}
if((strcmp(timeNew,timeOld) != 0) && (AddItselToList == true) && (ID != 99))
{handlePacket(position,ID);
strcpy(timeOld,timeNew);}
delete[] position;
delete[] timeNew;
}
delete[] timeOld;
}
ИВК является указателем на COM C# объекта, где GetData, GetTime Струны Возвращение и getmulticastid возвращает Int.
Есть ли что-то с моим кодом резьбы?
_beginthreadex(NULL,0,ThreadFunc,NULL,0,NULL);
У вас есть утечки памяти. Вы должны удалить [] строки, возвращаемые ConvertBSTRToString, когда они вам больше не нужны. – Henrik
Вы пытались запустить программу внутри отладчика? Это поможет вам определить местоположение аварии, а также позволить вам просматривать переменные, чтобы увидеть, что они содержат. Вы делаете это сначала, и если вы все еще не можете понять это, добавьте эти детали в вопрос (особенно в строке, в которой сбой программы). –
строки нужны, пока программа не выйдет! Я запускаю его через отладчик, и он дает мне адрес –