您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

关于数组越界(内存泄漏)的那点事儿(C语言)

关于数组越界(内存泄漏)的那点事儿(C语言)

  数组越界在C语言是一个很常见的问题,但是也正是因为它很常见,有时候也会出现一些不可思议,难以理解的情况,就像下面这样。

情形如下:
情形
如果难以理解,我们来打印一下数组a每个节点的地址以及num的地址。

如下:
效果图
  我们可以看到,当数组a循环到a[12]的时候与num的地址完全相同。从而覆盖了num已有的值12,变成a[ ] = 0的值,即0。重新累加。
  我们思考可以发现,此时num跟a[9]相差8个字节的偏移量。那么我们会想,不管num是任意数据类型,都会只差8个字节的大小呢?

  因此我做了以下实验:
效果图
  发现此时相差12个字节的偏移量,因此并不是固定且有规律只相差8个字节的偏移量,与num的数据类型是相关联的。

总结:内存是连续的线性排布。且与编译器处理的安全隔离相关联。(编译器不同处理方式可能不同)


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进