Информация об изменениях

Сообщение Re: memcpy от 15.04.2015 14:53

Изменено 15.04.2015 14:55 Igore

Здравствуйте, SmileIlya, Вы писали:

SI>Доброго всем дня.

SI>Есть проблема, кусок кода ниже.
SI>Суть проблемы в том, что при вызове memcpy приложение схлопывается, ругаясь на ошибку чтения.

SI>
SI>const void* pValue = (void*)vDouble.data();
SI>size_t nBytes = sizeof(double) * vDouble.size();
SI>size_t    nValueBytes = 0;
SI>void*    pValuePoint = NULL;

SI>if(vDouble.empty())
SI>    return NULL;

SI>if(!pValuePoint)
SI>    pValuePoint = malloc(nBytes);
SI>else//Это часть выкинуть таких условий не возникает
SI>    if(nValueBytes != nBytes)
SI>        pValuePoint = realloc(pValuePoint, nBytes);

SI>if(!pValuePoint)
SI>    return NULL;

SI>nValueBytes = nBytes;
SI>memcpy(pValuePoint, pValue, nValueBytes); // проблема тут
SI>

Попробуй с моими исправлениями, но я бы это все просто переписал и не мучился, ведь то что ты привел это.
auto pValuePoint = vDouble;
Re: memcpy
Здравствуйте, SmileIlya, Вы писали:

SI>Доброго всем дня.

SI>Есть проблема, кусок кода ниже.
SI>Суть проблемы в том, что при вызове memcpy приложение схлопывается, ругаясь на ошибку чтения.

SI>
SI>const void* pValue = (void*)vDouble.data();
SI>size_t nBytes = sizeof(double) * vDouble.size();
SI>size_t    nValueBytes = 0;
SI>void*    pValuePoint = NULL;

SI>if(vDouble.empty())
SI>    return NULL;

SI>if(!pValuePoint)
SI>    pValuePoint = malloc(nBytes);
SI>else //Это часть выкинуть таких условий не возникает
SI>    if(nValueBytes != nBytes)
SI>        pValuePoint = realloc(pValuePoint, nBytes);

SI>if(!pValuePoint)
SI>    return NULL;

SI>nValueBytes = nBytes;
SI>memcpy(pValuePoint, pValue, nValueBytes); // проблема тут
SI>

Попробуй с моими исправлениями, но я бы это все просто переписал и не мучился, ведь то что ты привел это.
auto pValuePoint = vDouble;