| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 690 人关注过本帖
标题:好吧,终于轮到我出事了.函数内部生命周期~~
只看楼主 加入收藏
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
结帖率:83.33%
收藏
已结贴  问题点数:50 回复次数:3 
好吧,终于轮到我出事了.函数内部生命周期~~
用的是vs2008,它的安全审核实在太高了,也出事了.
做的是一个DLL文件,因为DLL要适用于非lib版的编译器链接,所以输出的时候强制以C形式  extern "C"
万恶的事情来了,C里面没有class,我不能输出类.(我特么本来还要重载函数的,结果也不行)
也就是说我现在只能以函数形式做接口.

我有N多个函数是以字符串形式返回的,但问题是返回的值必须储存在函数以外.我又没有办法用类去自动化.
储存在函数内部就直接超出生命期了.我不希望DLL单独输出该变量地址.
而且为了方便,EXE一次性读完返回值就储存在自己的内部,而DLL部分释放.
特么肿么办?
搜索更多相关主题的帖子: 编译器 字符串 而且 接口 
2014-02-16 19:54
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:50 
如果dll内部带出来的内存,再提供一个对应的free函数就行了。

和dll的接口,可以用导出函数 带进一个 IN 的参数接口,通过参数把数据带出来就行了,win api大多数都是这样的

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2014-02-17 08:31
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:0 
前面我也这样想过,但如果我忘记呼叫这个函数就会有内存泄露,一点也不完美。
后来我用参数的形式返回,只能返回string,长度可以用成员函数测量。但没办法用char*长度不知道。
要么就再导出一个变量,这样太不和谐了,一点智能化也没有。
问题是返回string类已经终结了跨语言开发,后来想想这样已经没意义了最多同语言忽视掉静态库。
特么的哥怒删extern "C"
喜见类导出
2014-02-18 15:40
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
通过std::string 带回来 有弊端的,如果stl 用了copy on write 技术,就很容易出事。
可以看看这个文章:
http://blog.

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2014-02-19 12:03
快速回复:好吧,终于轮到我出事了.函数内部生命周期~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018928 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved