어떻게 memset의 값을 복구 할 수 있습니까? 다른 함수에서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);
어떤 종류의 기억 기능이 있습니까? sz 값을 재설정 할 수 있습니까? 이 현재 방법은 저에게 오류를주고 있습니다
'memset()'에 대한 호출이 생각한대로 작동한다고 생각하지 않습니다. 당신이 묘사 한 바에 따르면,'memset() '을 전혀 사용하지 않으려 고합니다. –
'memset'을 잘못 사용하는 것 외에도,'my_malloc'에서'retval'을 계산하는 것은 완전히 가짜입니다. –