Şimdi OS X 10.10.5 kullanıyorum ve aşağıda gibi malloc ve yığın hakkında bir deney yapıyorum:Neden mal belleği dönüş değeri işlem bellek haritasında değil?
#include <stdio.h>
#include <stdlib.h>
int main() {
int *p;
p = malloc(sizeof(int));
*p = 100;
printf("the malloc p pointer addr is %x\n", p);
getchar();
}
koymak dışarı the malloc p pointer addr is c3404ba0
olduğu;
Adres 0xc3404ba0
adresinin işlem yığınının bir parçası olarak maclloc tarafından tahsis edildiğini düşünüyorum.
vmmap
aracını kullanın sonucudur:
Biz 0xc3404ba0
yığın alanında olmadığını görebilirsiniz, ama o gerçekten ayrılan belleğe işaretçi bu. Bunun derdi ne? I% x yerine% p kullandıkları zaman, bu, hemen tamir
, çıkış the malloc p pointer addr is 0x7fe131404ba0
ve VMMap çıktısı: @Alex lobuna
sayesinde.
görünüyor. Programınız 64bit modunda derlenmişse, işaretçiyi yazdırmak için '% x' kullanarak üst 32 biti kesecektir. Bunun yerine '% p' ile aynı şeyi deneyin ve sonuçları gönderin. –
yanlış biçim belirtecini kullanarak başlatır ** tanımsız davranış ** http://stackoverflow.com/q/33648596/995714 http://stackoverflow.com/q/4231891/995714 http://stackoverflow.com/q/14504148/995714 http://stackoverflow.com/q/16864552/995714 –