我有一个被调用数千次的C函数,我注意到它是内存泄漏的唯一可能的位置。我已经使用Valgrind和Totalview的MemoryScape来检查泄漏,但他们什么也没说,但是当应用程序在AIX 6.1上运行时,会逐渐泄漏。
注意:我正在使用“无泄漏”的SAP RFC SDK,并且已经与开发人员交谈,他们说我使用的lib是100%无泄漏的......所以它不是...... < / p>
代码大致如下,每小时被调用数千次......
int writeMessage(message msg){
...
...
header = ItCreate( "HEADER", HEADER_LEN, 0, 0 );
body = ItCreate( "DATA", DATA_LEN, 0, 0 );
...
...
ItDelete(it_header);
ItDelete(it_body);
...
}
像“HEADER”和“DATA”这样的字符串文字是否会导致我的小泄漏?愚蠢的问题,但我宁愿要求安全。
如果我在这种特定情况下将它们声明为CONSTANTS会有什么不同?
感谢您的帮助,非常感谢
答案 0 :(得分:3)
答案是,但这取决于 ItCreate 的作用。粘贴ItCreate功能代码。
答案 1 :(得分:2)
没有。字符串文字具有静态存储持续时间,因此其存储在程序启动之前保留,其生命周期是程序的整个执行。
答案 2 :(得分:1)
像“HEADER”和“DATA”这样的字符串文字是否会导致我的问题 小泄漏?
不。
答案 3 :(得分:1)
字符串文字本身不会分配或释放内存,因此无法泄露。
声明他们const
不会改变任何事情。你的问题在别处。