永发信息网

c语言测内存边界

答案:1  悬赏:80  手机版
解决时间 2021-03-09 11:29
  • 提问者网友:愿为果
  • 2021-03-09 00:23
c语言如何测出 栈内存 堆内存 全局静态区 常量区 代码段区的 内存边界啊?
代码如何写? 用递归吗?
新手麻烦 帮帮忙
最佳答案
  • 五星知识达人网友:上分大魔王
  • 2021-03-09 00:56
在release模式下是测不出内存的边界的。但是如果你访问内存超出程序的内存范围,程序出错而退出的
在debug模式下可以测出由malloc函数分配的内存边界, 一般是连续四个字节的0xFD, 其他的也没有边界.不过堆内存初始化为0xCD, 栈内存初始化为0xCC,也可以看出也可以看出刚分配的内存的界限.

一般读取内存没有问题,但是往常量区 代码段区些数据时,程序就会出错.

void disMem(int offset, int len)
{
int i, n;
unsigned char * pl = (unsigned char *)0 + offset;

unsigned char * ph = pl + len;
n = offset % 16;
for(i =0; i< n; i++) printf(" ");
while(pl < ph)
{
if((long)pl % 16 == 15) printf("%02X ", *pl++);
else printf("%02X\n", *pl++);
}
}
这个可以显示内存offset处长度为len的内存中的数据内容.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯