MyException - 我的异常网
当前位置:我的异常网» Delphi » 局部数组变量的地址,该怎么处理

局部数组变量的地址,该怎么处理

www.MyException.Cn  网友分享于:2013-03-15  浏览:13次
局部数组变量的地址
function test():integer;
var
 ary:array [0..100] of char;
begin
  ary[0]:=#0;
  result:=integer(@ary)+integer(ary[0]);
end;

上面的一段代码,每次返回的ary的地址都是一样,如果在线程中调用这样的函数,加入test()的处理时间比较长才退出,会不会出现ary还在处理的时候,被另外一个调用覆盖数据?

如果会的话,那就产生脏数据了,要怎么避免?
如果不会,为什么?他们的地址都是一样的,那操作的都是相同的一段内存吧?

还是我这样返回得到的只是对于函数入口地址的偏移量?



------解决方案--------------------
不会
局部变量是在栈上进行分配内存的,它的内存地址是变化的
在函数或方法被调用时分配,在调用结束后其内存就被释放

------解决方案--------------------
稍微持一点保留意见,首先局部变量用完释放是对的,但是delphi的内存分配机制不是把内存还给系统,而是保留给下次使用(LZ所说的上面的一段代码,每次返回的ary的地址都是一样也应该就是碰巧遇到了这种情况)

Lz的代码有一部分是直接操作数组指针的地址,这种操作本身非常不安全,很容易修改不该修改的内存地址,轻则造成脏数据,重则异常退出,当多线程时,这种使用尤为致命,所以如果想多线程操作同一个array就按照2L进行修改,如果只是调用函数我觉得应该避免出现integer(@ary)这样的代码

文章评论

程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
鲜为人知的编程真相
鲜为人知的编程真相
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
代码女神横空出世
代码女神横空出世
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员都该阅读的书
程序员都该阅读的书
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
一个程序员的时间管理
一个程序员的时间管理
程序员和编码员之间的区别
程序员和编码员之间的区别
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员的鄙视链
程序员的鄙视链
每天工作4小时的程序员
每天工作4小时的程序员
那些争议最大的编程观点
那些争议最大的编程观点
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
10个调试和排错的小建议
10个调试和排错的小建议
 程序员的样子
程序员的样子
我是如何打败拖延症的
我是如何打败拖延症的
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
如何成为一名黑客
如何成为一名黑客
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Java程序员必看电影
Java程序员必看电影
编程语言是女人
编程语言是女人
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我的丈夫是个程序员
我的丈夫是个程序员
漫画:程序员的工作
漫画:程序员的工作
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员应该关注的一些事儿
程序员应该关注的一些事儿
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有