c - Valgrind 在给出分配数量时究竟考虑了什么?

标签 c linux valgrind

<分区>

我目前正在重新编写仅供 Linux 使用的 C/C++ malloc 函数。该练习的挑战之一是使我的函数尽可能接近原始的 malloc

我通常使用 Valgrind 检查我的 mallocs 是否被正确允许和释放,但我不知道 Valgrind 是否可以选择其他形式的内存分配,如果可以,是哪些?

第二个问题:假设 Valgrind 不选择其他形式的内存分配,我还能使用什么来检查我的函数是否按预期工作?

最佳答案

Valgrind 假定 malloc 按预期工作以管理内存分配。如果您的目标是制作自己的 malloc 实现,则不能使用 Valgrind 对其进行调试。

这是本练习的挑战之一:您必须自己调试它。

如果您想检查您的函数是否按预期工作,请编写一个函数 show_alloc_mem 来转储您的内存并检查是否所有内容都按预期显示。

关于c - Valgrind 在给出分配数量时究竟考虑了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35087372/

相关文章:

php - 浏览器重定向

java - 如何在 Linux 上安装 java 应用程序包

c - 分析valgrind输出: "invalid free()"

c - 如何在函数内初始化 Struct 指针数组?

除了 "main"之外,我还可以安全地使用名称中包含 "int main(int argc, char **argv)"的函数吗?

c - 哪个更好 - printf 或 fprintf

linux - 需要深入了解编写操作系统 Shell 类(class)

c++ - 使用替换的 operator new 进行 Clang 链接时优化会导致 valgrind 中的 free()/delete 不匹配

c - 'less' linux 命令的备用程序/使 'less' 安全

c - c 中的嵌套结构和严格别名