Здравствуйте, 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()))