动态库,接口参数,STL类型,资源释放失败
2009-06-08 17:18
351 查看
这段时间,在工程中将一些功能封装成动态库,需要使用动态库接口的时候.使用了STL的一些类型作为参数.
比方string,vector,list.但是在使用接口的时候.
class exportClass
{
bool dll_funcation(string &str);
};
//上面这个类只是一个形式,具体内容不写出来了.这个类被导出
当我在使用这个库的时候.这样写代码:
string str="":
exportClass tmp;
tmp.dll_function(str);
这个函数能成功调用.但是在函数里面会给这个数组附值.如果字符串太长,就会出错.函数调用能成功,但是一旦str资源需要释放的时候,资源就不能释放了,提示释放了错误的内存空间.
一点一点取掉这个函数的代码.最后就剩下
str="qadasdasdasdsafsafas";
还是出错误.
如果改成很短的字符串,就不会出错误.
在这个时候,只能尝试认为是字符串的空间太小
最终我修改成这样,错误消失了.希望错误真的是这个引起的
string str="":
str.resize(1000);
exportClass tmp;
tmp.dll_function(str);
比方string,vector,list.但是在使用接口的时候.
class exportClass
{
bool dll_funcation(string &str);
};
//上面这个类只是一个形式,具体内容不写出来了.这个类被导出
当我在使用这个库的时候.这样写代码:
string str="":
exportClass tmp;
tmp.dll_function(str);
这个函数能成功调用.但是在函数里面会给这个数组附值.如果字符串太长,就会出错.函数调用能成功,但是一旦str资源需要释放的时候,资源就不能释放了,提示释放了错误的内存空间.
一点一点取掉这个函数的代码.最后就剩下
str="qadasdasdasdsafsafas";
还是出错误.
如果改成很短的字符串,就不会出错误.
在这个时候,只能尝试认为是字符串的空间太小
最终我修改成这样,错误消失了.希望错误真的是这个引起的
string str="":
str.resize(1000);
exportClass tmp;
tmp.dll_function(str);
相关文章推荐
- 远程RMI调用接口时传JSON类型参数失败的解决办法
- 提高Java代码重用性方法 措施二:把参数类型改成接口
- JDK1.7中新增自动释放资源接口AutoCloseable
- C#调用VC的DLL的接口函数参数类型转换一览表
- 为参数类型一样返回类型不同的接口写一个泛型方法
- 第三部分:Android 应用程序接口指南---第三节:应用程序资源---第五章 资源类型
- 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)
- C#调用VC的DLL的接口函数参数类型转换一览表
- fiddler 测试后台接口,传参数失败
- 编写高质量代码改善C#程序的157个建议——建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的
- C#调用VC的DLL的接口函数参数类型转换一览表
- C#调用VC DLL接口函数参数类型转换方法介绍
- C#调用VC DLL接口函数参数类型对应介绍
- 什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)
- C#调用VC的DLL的接口函数参数类型转换一览表
- mybatis中接口参数使用map类型的好处
- WIN7网关问题问题“在释放接口 Loopback Pseudo-Interface 1 时出错: 系统找不到指定的文件。操作失败,没有适配器处于允许此操作的状态”解决方案
- 提高Java代码重用性方法 措施二:把参数类型改成接口
- c++参数类型的识别(STL)
- JavaSE:1min讲解引用类型参数(3)-接口