jiet   4년 전

이렇게 코드를 짜서 실행하면
p에 0바이트를 할당했는데도 불구하고 p is ffffffff 로 출력되는데요, malloc함수가 메모리상에 시작주소를 배정하고 0바이트를 배정받았음에도 불구하고 일단 int로 선언 되었으니 시작주소부터 해서 32비트만큼 쪼로록 할당한거라고 봐도 될까요?
지금은 간단한 코드만 짜서 여유공간이 많아서 문제가 안 생긴거고 나중에 메모리 공간이 꽉 찼을 때 할당을 제대로 안하고 이런식으로 코드를 짜면 데이터 침해가 일어날려나요

c83e3d13-480f-4518-bea9-041efeecdbfb

jung2381187   4년 전

malloc(0)를 호출하면 NULL을 리턴하거나 적법한 메모리 주소를 리턴합니다. 어느 걸 리턴할지는 컴파일러 스펙에 따라 다릅니다. 만약 적법한 메모리 주소가 리턴된 경우 이 주소에다 free를 요청할 순 있지만, 메모리에 할당된 건 없기 때문에 *p로 접근하면 안 됩니다.

댓글을 작성하려면 로그인해야 합니다.