현재 Visual C++는 malloc()
이 __declspec(restrict)
으로 장식 된 런타임과 함께 제공됩니다."다른 포인터에 의해 앨리어싱되지 않은 포인터"의 의미는 무엇입니까?
MSDN은 malloc()
에 의해 반환 포인터 다른 포인터에 의해 별명을 할 수없는 컴파일러이 장식 상태를 말한다. 좋아, 두 번 연속해서 malloc()
을 호출하면 별개의 포인터가 반환됩니다. 하지만 전화하면 어떻게 되나요?
void* memory1 = malloc(10);
free(memory1);
void* memory2 = malloc(10);
//here memory1 may be equal to memory2
이 경우 두 포인터는 매우 동일한 위치를 가리킬 수 있습니다. 이 값과 의 상관 관계는 다른 포인터에 의한 별칭이 될 수 없습니다 의미는 __declspec(restrict)
입니까?
나는 그 질문을 이해하지 못한다. 여기서 앨리어싱이 없으며 free'd는 더 이상 존재하지 않습니다. Dereferencing'memory1'은 기술적으로 UB가 될 것입니다. – Mat
@Mat : 대답처럼 보입니다. – sharptooth