Как я могу восстановить значение memset?
В следующем коде предполагается, что программа выделяет определенный объем пространства, запрошенный пользователем, и сохраняет размер, запрошенный пользователем, перед указателем, возвращенным пользователю:
void* my_malloc(size_t sz)
void* block = malloc(sz + sizeof(size_t));
void* retval = &block + sizeof(size_t);
memset(block, sz, sizeof(size_t));
return retval;
В другой функции пользователь может передать указатель своих данных, и я хочу восстановить размер, который я сохранил перед своей памятью.
void my_free(void *ptr) {
void* block = ptr - sizeof(size_t);
size_t *sz;
memset(sz, block, sizeof(size_t));//This is the line in question.
free(block);
Есть ли какая-нибудь функция memread, которую я могу использовать для сброса значения sz? Этот текущий метод дает мне ошибки
memset()
делает то, что вы думаете. Из того, что вы описали, вы вообще не хотите использоватьmemset()
. - person Greg Hewgill   schedule 26.09.2014memset
ваше вычислениеretval
вmy_malloc
также является полностью фиктивным. - person Employed Russian   schedule 26.09.2014