다음과 같이 :: 내 코드가 있습니다 .. malloc에 행동을 이해 도와다음 malloc 메모리와 SIGSEGV
int main()
{
int *ptr=NULL;
ptr=(int *)malloc(1);
//check for malloc
*ptr=1000;
printf("address of ptr is %p and value of ptr is %d\n",ptr,*ptr);
return 0;
}
위의 프로그램은 잘 (오류없이 실행) ... 어떻게 작동? 1 바이트로만 1000의 가치를 제공했습니다!
힙의 다음 메모리 주소를 덮어 쓰시겠습니까? 예인 경우 sigsgev가 있습니까?
동작이 정의되지 :-) 문제가있는 코드에도 불구하고 일하는 모든 일을 포함하여 일어날 수 있다는 것을 의미한다, 그래서 또는 충돌하지 않을 수 있습니다. 일부 구현에서'free (ptr) '할 때 프로그램이 중단됩니다. –
포장으로 무엇인가해야합니까 ?? 일반적으로 32 비트 응용 프로그램과 4 바이트의 기본 포장. –