【发布时间】:2011-09-02 06:26:13
【问题描述】:
对于一个小型的嵌入式应用程序,我编写了一些函数+结构体,它们用作字符串缓冲区(类似于 C++ 中的 std::stringstream)。
虽然这样的代码工作正常,但有一些不那么小问题:
- 我以前从未在 C 中编写过手动分配和使用不断增长的内存的函数,因此恐怕还有一些怪癖需要解决
- 似乎代码分配的内存比它实际需要的多得多,这是非常糟糕
- 由于 valgrind 报告的警告,我已在代码中的某个位置从
malloc切换到calloc,这成功删除了警告,但我不完全确定我是否真的正确使用它李>
我的意思是它分配的比它真正需要的多的例子(使用 56k 文件):
==23668== HEAP SUMMARY:
==23668== in use at exit: 0 bytes in 0 blocks
==23668== total heap usage: 49,998 allocs, 49,998 frees, 1,249,875,362 bytes allocated
...看起来不太对劲...
有问题的代码在这里(太大,无法将其复制到 SO 上的 <code> 字段中):http://codepad.org/LQzphUzd
需要帮助,感谢您的任何建议!
【问题讨论】:
-
问题到底是什么?
标签: c memory embedded malloc calloc