выделение памяти в c, освобождение в c ++ - PullRequest
2 голосов
/ 14 февраля 2012

UtilityTest.cpp и utility.c находятся в двух разных проектах, но в одном решении.

В UtilityTest.cpp после вызова 'BytesToString (pbArray, 5) ', ему не удается free .Почему?

Мы не можем выделить память в c и освободить в c ++?

UtilityTest.cpp

[Owner("SHRI")]
[TestMethod]
[TestCategory("Automatic")]
[Description("Convert byte to string")]
void ConvertByteToString()
{
    unsigned char pbArray[5] = { 0x41, 0x42, 0x43, 0x44, 0x45 };
    char* pbExpArray = NULL;
    unsigned int Flag = 1;
    int len = 0;

    pbExpArray = BytesToString(pbArray,5);
    len=strlen(pbExpArray);
    Flag=strcmp("41 42 43 44 45 ",pbExpArray);
    free(pbExpArray);
}

utility.c

char* BytesToString( const unsigned char* PpcbBytes, const unsigned int PuiNoOfBytes)
{
    unsigned char bRetVal = 0;
    char tempStr[5];
    unsigned int ctr = 0;
    char* PpszString = NULL;

    do
    {
        PpszString=(char*)calloc(PuiNoOfBytes*3+1,sizeof(char));
        if(NULL==PpszString)
            break;
            for(;ctr<PuiNoOfBytes; ctr++)
            {
                    sprintf(tempStr, "%02X ", PpcbBytes[ctr]);
                    strcat(PpszString, tempStr);
            }
    } while(0);
    return PpszString;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...