그래서 오늘 malloc (1024)을 호출하여 힙을 가지고 놀았습니다. 나는 대부분 힙의 구조를 이해하고 있기 때문에, 무엇이 메모리에 있었는지를 출력 할 때 "00000000 00000409 00000000 00000000 ...."이 표시되는 것에 놀라지 않았다.내 힙은 무엇입니까? C linux
그러나 1032 바이트가 지나면 나는 예상했다. 힙의 가장 큰 덩어리를 찾는다. 대신 malloc (1024) 호출이 처음 시도 된 후 다른 호출이 발생한 것처럼 다른 청크를 발견했습니다. 로 변환
00000000 00000409 30387830 65336234
30203a30 30303030 20303030 30303030
30303030 30303020 30303030 30302030
34303030 33203930 33303330 20303330
30333033 30333032 33343320 33303330
33332030 39333032 000a3233 00000000
이 :이 존재하는 이유
08x0e3b40 :00000 00000000000000 000000 040003 903030 03003030302343 303033#09302
23
사람이 알고 있나요이 덩어리에서
은 다음과 같다? 한 번 malloc 만 호출 할 것이라고 확신합니다. 그리고 그것은 언제나 malloc 크기에 상관없이 거기에있는 것처럼 보입니다.
컴퓨터에서 다른 일이 일어나니까? 또한 당신은 거기에 있기를 기대 했습니까? (예 : * "힙의 맨 덩어리"* 란 무엇입니까?) – UnholySheep
혹시 제비의 문자열이 포함 된 문자열로 print를 호출하지 않았습니까? ASCII 30303030? – stark
'brk'에서의 이동량 (데이터 세그먼트 크기의 변화)은 할당 자에 따라 다릅니다. 'malloc' 호출에서 실제로 요청한 것 이상으로 옮길 수 있습니다. 따라서 데이터가 반드시 힙의 맨 위에있는 것은 아닙니다. – Arash