免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: cuer_2
打印 上一主题 下一主题

局部变量会在函数返回之后就销毁吗? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-04-04 21:01 |只看该作者
AT&T汇编,网上不少资料~

论坛徽章:
0
22 [报告]
发表于 2009-04-04 21:19 |只看该作者
原帖由 Lynch2007 于 2009-4-4 21:01 发表
AT&T汇编,网上不少资料~


如果只要能看的懂反汇编的东西就行了
要学多久?

论坛徽章:
0
23 [报告]
发表于 2009-04-05 09:05 |只看该作者
推荐看一下<C陷阱与缺陷>,<C专家编程>,<C和指针>这些书,里面讲述了很多经常犯的错误,很实用~我正在看 ;)
只用看懂汇编的话,几天应该就行了吧(遇到没见过的指令查书就行了),AT&T语法和intel不一样,不过对比着看也容易些,会intel的话,这个还是比较快的~linux下用的多的还是AT&T语法,我也是学习中

论坛徽章:
0
24 [报告]
发表于 2009-04-05 12:57 |只看该作者
原帖由 Lynch2007 于 2009-4-5 09:05 发表
推荐看一下<C陷阱与缺陷>,<C专家编程>,<C和指针>这些书,里面讲述了很多经常犯的错误,很实用~我正在看 ;)
只用看懂汇编的话,几天应该就行了吧(遇到没见过的指令查书就行了),AT&T语法和intel不 ...



好的
谢谢指点

论坛徽章:
0
25 [报告]
发表于 2009-04-06 19:14 |只看该作者
函数返回后,内部所申请的局部变量被释放,但是释放的仅仅是指向其内存地址的指针,并没有对该内存区域进行抹除操作。

在之后某一次该区域内存被使用的时,这块内存将会被直接覆盖掉。

如果,在函数返回后增加擦除内存的操作,这样系统会有一部分时间消耗在无用功上,因为在之后该内存被使用的时候是不会使用以前的值。

从常理上说,你不可能说在定义了一个指针并分配内存后在没有向内存中写入任何数据的情况下就读取指针所只想的内存吧。

论坛徽章:
0
26 [报告]
发表于 2009-04-06 21:27 |只看该作者
"wo shi sunkang"是常量,常量是有专门存储区域。这不同与函数的局部变量,是在栈存储区域。该存储区域在函数返回并不会销毁。
所以。。。

论坛徽章:
0
27 [报告]
发表于 2009-04-06 21:49 |只看该作者

回复 #1 cuer_2 的帖子

局部变量是分配在栈上的,函数返回时,栈回收,局部变量就释放了.
至于,这个字符串是分配在哪里,还得看看例子
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP