鉴于网上这个资料实在太少,将以前整理过却未完全的一篇文章贴出来,希望大牛指正vs下内存管理方式。可联系gaoshiqiang1987@163.com
1 int _tmain(int argc, _TCHAR* argv[]) 2 { 3 char *pcMem = (char *)malloc(8); 4 short *psMem = (short *)malloc(12); 5 int *piMem = (int *)malloc(16); 6 long *plMem = (long *)malloc(20); 7 float *pfMem = (float*)malloc(32); 8 double *pdMem = (double*)malloc(48); 9 10 system("PAUSE"); 11 return 0; 12 }
pcMem 0x007722c8 "屯屯屯屯铪铪" char * psMem 0x00772310 short * piMem 0x00772358 int * plMem 0x007723a8 long * pfMem 0x00779230 float * pdMem 0x00779290 double *
0x007722B8 08 00 00 00 01 00 00 00 7a 00 00 00 fd fd fd fd cd cd cd cd cd cd cd cd fd fd fd fd ab ab ab ab 0x00772300 0c 00 00 00 01 00 00 00 7b 00 00 00 fd fd fd fd cd cd cd cd cd cd cd cd cd cd cd cd fd fd fd fd 0x00772348 10 00 00 00 01 00 00 00 7c 00 00 00 fd fd fd fd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd 0x00772398 14 00 00 00 01 00 00 00 7d 00 00 00 fd fd fd fd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd 0x00779220 20 00 00 00 01 00 00 00 7e 00 00 00 fd fd fd fd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd 0x00779280 30 00 00 00 01 00 00 00 7f 00 00 00 fd fd fd fd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd
7a--char 7b--short 7c--int 7d--long 7e--float 7f--double
至于还有结构体以及类的分配可能需要另外讨论
注1:这里写16byte是因为对比了分配内存首地址往前偏移8byte、16byte、32byte,发现16byte内存内容跟所分配的最接近,因为没有源码,所以只能做如上猜测
注2:没有实际资料证明,只是猜想,上面几个是基本数据类型,但是面对结构体或者类时其怎么表示尚不清楚
原文:http://www.cnblogs.com/littlejohnny/p/4846361.html