가능한 중복 : C에서 프로그래밍 할 때
C programming : How does free know how much to free?free()는 얼마나 많은 메모리를 할당 해제해야하는지 알고 있습니까?
, 나는 종종 메모리를 할당 malloc()
를 사용 free()
그것을 해제 :
MyObject* objArr= (MyObject*) malloc(sizeof(MyObject)*numberOfObjects);
/** Do stuff **/
free(objArr);
어떻게 free()
가 얼마나 많은 메모리를 알 수 있습니까 할당을 취소 하시겠습니까? malloc()
포인터를 기억할 어딘가에 테이블을 만들고 각 포인터가 얼마나 많은 메모리를 가리키고 있습니까?
포인터의 이름을 바꾸면 free()
이 실패합니까? 예 :
MyObject* objArr= (MyObject*) malloc(sizeof(MyObject)*numberOfObjects);
MyObject* newPtr= objArr;
free(newPtr); /** Does this fail? **/
포인터를 증가시키고 free()
을 실행하면 어떻게됩니까? 예 :
MyObject* objArr= (MyObject*) malloc(sizeof(MyObject)*numberOfObjects);
newPtr++;
free(newPtr); /** What happens now? **/
원래 배열의 끝 부분에서 추가 메모리 덩어리를 할당 해제합니까?
중복 http://stackoverflow.com/questions/1518711/c-programming-how-does-free-know-how-much-to-free – codaddict