Я подозреваю, что проблема связана с тем, как вы выделили values
: values = (void*)calloc(3,sizeof(
void
))
. Это должно быть sizeof(void *)
, а не просто sizeof(void)
.
sizeof (void) может быть нулем или чем-то еще, что не имеет смысла, так что вы на самом деле не выделяете память для начала ... просто тупая удача, что назначения работают, и затем появляется ошибка попытаться освободить память.
РЕДАКТИРОВАТЬ: вы также напрашиваетесь на неприятности, чередуя C 101-style new
/ delete
с C-style malloc
/ free
. Можно использовать их обоих, если вы не delete
что-то, что вы malloc
'ed или free
что-то, что вы new
' ed, но вы будете смешивать их в своей голове, если иди так.