图示 指针与内存

iamkconghua 2014-03-07 01:36:26


上图送给新手,老鸟勿视!
...全文
171 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamkconghua 2014-03-07
  • 打赏
  • 举报
回复
哈哈,赵大侠都出来了。 一幅图就想让新手搞懂所有的内存知识,我估计够呛。期盼高手出幅这样的内存图,就一幅,别整成蚊子大小的字啊。 从本质上讲,所有内存都是可读可写的。否则,某个内存中的值当初是如何写入的呢?只是有不同的权限限制而已。
iamkconghua 2014-03-07
  • 打赏
  • 举报
回复
呵呵,当然是Debug环境啊,上图标的不是清清楚楚嘛, Win32 Debug,你要是换个环境,如BC, TC啥的,内存的值可能就变了,跟编译器密切相关。
赵4老师 2014-03-07
  • 打赏
  • 举报
回复
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
FrankHB1989 2014-03-07
  • 打赏
  • 举报
回复
引用 7 楼 iamkconghua 的回复:
另外,针对XP + VC6.0, “p1没有初始化,其值是不定的,是随机的” 这句话是不对的。 对上述环境而言,p1不是随机的,就是0xCCCCCCCC。 之所以将其初始化为许多CC,是因为0xCC是对应的汇编代码是3号中断即int 3,逆向工程中常用int 3来进行跟踪二进制代码。
不对。你还得指出是Debug。否则别指望烫烫烫烫。
iamkconghua 2014-03-07
  • 打赏
  • 举报
回复
另外,针对XP + VC6.0, “p1没有初始化,其值是不定的,是随机的” 这句话是不对的。 对上述环境而言,p1不是随机的,就是0xCCCCCCCC。 之所以将其初始化为许多CC,是因为0xCC是对应的汇编代码是3号中断即int 3,逆向工程中常用int 3来进行跟踪二进制代码。
iamkconghua 2014-03-07
  • 打赏
  • 举报
回复
这些知识都知道。我是问针对上图的具体环境,XP + VC6.0,上图的具体错误在哪?谢谢。
敬畏者 2014-03-07
  • 打赏
  • 举报
回复
简单的说就是: 一个进程中有从地址 0x0000 ~~ 0xfff..fff (2^32 即4GB)大小的内存空间 粗略的可以认为这些内存一部分是空的,假的,没有对应实际的物理内存.另一部分是已经分配了的,比如装在了我们程序的内存. 在分配了的内存中,又有几种,有些内存只能读,有些内存只能写,有些内存可读写,还有一些内存可以执行代码,这些是对内存权限的设置,并且是可以修改的. p1没有初始化,其值是不定的,是随机的,是历史上遗留下来的过期数据,可以指向任何一个地址,比如未分配的内存,或者只写的内存等. 我们的程序在编译生成时,会把字符串常量默认存储在只读的内存区域中,所以p2指向的是只读的,写会发生错误,但是可以修改这个内存变成可读写 p3是 栈内存,默认是可读写
iamkconghua 2014-03-07
  • 打赏
  • 举报
回复
上述代码本身是有错误的,图中已经说过了。请指出其他错误。谢谢。
iamkconghua 2014-03-07
  • 打赏
  • 举报
回复
引用 2 楼 u013573183 的回复:
虽然1个小时弄完了,但是不得不告诉你,是错的...
请指教!
敬畏者 2014-03-07
  • 打赏
  • 举报
回复
虽然1个小时弄完了,但是不得不告诉你,是错的...
  • 打赏
  • 举报
回复
good,很直观~~~~~
内容概要:本文档主要讲解了C语言中指针与数组之间的关系,特别是指针在处理一维数组和多维数组时的应用。文档首先总结了当需要在函数中修改实参数组元素值时,实参与形参之间可能存在的四种对应关系,包括形参与实参都用数组名、实参用数组名形参用指针变量、实参形参都用指针变量以及实参为指针变量形参为数组名的情况。接着,文档深入探讨了多维数组与指针的关系,解释了如何使用指针访问多维数组元素,并通过具体的内存布局图示展示了多维数组在内存中的存储方式。此外,文档还介绍了指向多维数组元素的指针变量的定义方法及其一般形式。最后,文档提供了实战演练和课后习题,帮助读者巩固所学知识。 适合人群:具有一定的C语言编程基础,对指针和数组有一定了解的学习者或开发者。 使用场景及目标:①理解并掌握C语言中指针与数组之间的相互作用;②学会在函数调用中正确传递数组参数;③掌握多维数组的指针表示法,能够熟练地使用指针操作多维数组中的元素;④通过实例练习加深对指针和数组的理解。 阅读建议:由于指针和数组的概念较为抽象,建议读者在学习过程中结合提供的内存布局图示进行理解,同时尝试编写并运行示例代码,以便更好地掌握相关知识点。

70,026

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧