简体   繁体   中英

access violation reading location in c++

I have a thread which reads multicast data and updates certain data structures

and another thread which is handled by chai 3d library

when I just run my library code it works fine.

when I run y thread also

I get access violation in one of the routine inside the chai3d code.

my thread code

    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;
}

cpi is a pointer to com c# object where getdata, gettime return strings and getmulticastid returns int.

is there something worn with my thread code?

_beginthreadex(NULL,0,ThreadFunc,NULL,0,NULL);

delete[] position and timeNew before the closing brace of the while loop. delete[] timeOld before the closing brace of ThreadFunc. Also, are you sure timeOld is long enough to copy timeNew into it? This may explain your access violation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM