포인터를 확보하는 것과 관련하여 이론적 인 질문이 있습니다.길이를 모른 채 포인터를 놓으십시오.
사람 (프로그램 자체 또는 OS)이 포인터와 길이를 추적해야한다고 생각합니다. 왜?
float* pointer1 = malloc(100 * sizeof(float));
예 : 여기에 플로트 포인터가 있습니다. 누군가 내 포인터 1 어레이의 길이를 말해 줄 수 있습니까? 런타임에 함수/메소드를 호출하여 포인터의 길이를 얻을 수있는 방법이 없습니까? 따라서 프로그램 (또는 OS)가 실행 시간에 그것의 실제 길이를 모른 채 포인터의 메모리 일부를 해제 할 수있는 방법 :
free(pointer1);
프로그램이 포인터의 길이가 무료로 알았다면, 왜 우리는 그 정보를 얻을 수없고 길이를 추적하는 다른 방법을 사용할 수 없습니다. 예 :
struct floatArray
{
float* pointer;
int length;
}
그래서이 문제는 정말 궁금합니다. 나는 OS가 어떻게 포인터 길이에 신경 쓰는지 배우고 싶다.
감사합니다.
Sait.
"포인터를 해제"같은 것은 없다. malloc에서 얻은 * 객체 *를 해제합니다.그 객체에 대한 포인터는 객체를 해제 할 목적으로 객체를 참조하는 방법이지만 포인터를 해제하지는 않습니다. 당신은 그 대상을 자유롭게하고 있습니다. –
@R .. 네, 맞습니다. 나는 "포인터를 사용하여 메모리에 저장된 객체를 해제하십시오."라고 말해야했습니다. +1. – Sait