내 프로그램에서 다시 사용하려는 배열에 문제가 있습니다. 나는 크기를 동적으로 바꾸고 그것을 지울 필요가있다. 그러나 불행히도 크기 조정은 작동하지 않습니다.크기 조정 및 배열 지우기
uint8_t * readBuffer; // Create array pointer
readBuffer = (uint8_t *) malloc(4); // Mem. alloc. 4bytes
memset(readBuffer, 0, sizeof(readBuffer); // Reset array
// Do stuff
free(readBuffer) // Release mem. block
....
readBuffer = (uint8_t *) malloc(1) // Mem. alloc. 1byte
memset(readBuffer, 0, sizeof(readBuffer); // Reset array
// Do stuff
free(readBuffer) // Release mem. block
크기 조정 단계에서 내 배열의 길이는 여전히 이전 (4)입니다.
나는 free
을 잘못 사용하고 있습니까?
클리어링을위한 memset
의 훨씬 더 효율적인 대안은 무엇입니까?
미리 감사드립니다.
4라는 것을 어떻게 알 수 있습니까? 또한 'realloc'을 사용하지 않는 이유는 무엇입니까? – Pubby
'sizeof (readBuffer) '로 확인한다. – JavaCake
'sizeof (readBuffer)'는'malloc'에 의해 할당 된 메모리의 크기를 반환하지 않고 단지 포인터 값을 저장하는 데 필요한 바이트의 수를 반환한다. – Naveen