Re[2]: memcpy
От: SmileIlya  
Дата: 15.04.15 14:37
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Что же ты сделать-то хочешь?


SVZ>На всякий случай, vDouble — лежит на стеке, а память под элементы массива выделяется в куче. А ты пытаешься скопировать всё это в один присест. Да еще не учитываешь, что размер double и void* может быть разным.


Хочу то я понятно чего, нормально скопировать pValuePoint значение.
Все это счастье часть общего алгоритма, я просто вынес все в одну ф-цию.
В реальности это выглядит сл. образом:

void fun(const void* pValue, size_t nBytes)
{
    size_t    nValueBytes = 0;
    void*    pValuePoint = NULL;
    
    if(!pValue || !nBytes)
        return NULL;
    
    if(!pValuePoint)
        pValuePoint = malloc(nBytes);
    else
        if(nValueBytes != nBytes)
            pValuePoint = realloc(pValuePoint, nBytes);
    
    if(!pValuePoint)
        return NULL;
    
    nValueBytes = nBytes;
    memcpy(pValuePoint, pValue, nValueBytes);
}

ну и понятно вызывается fun c параметрами (&vDouble,sizeof(vector<void*>) + (sizeof(void*) * (static_cast<vector<void*> const*>( pValue ))->size()))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.