当前位置: 首页 > 知识库问答 >
问题:

从malloc类型更改指针类型并释放它。会导致内存泄漏吗?

巫懿轩
2023-03-14

我使用malloc来分配指针类型使用的内存。然后我强行修改指针类型。使用free func释放内存块。我很想知道内存泄漏是否会发生?

#include <stdlib.h>

int
main(int argc, char **argv) {
        char *a = (char*)malloc(sizeof(char));
        int *b = (int*)a;
        free(b);
}

共有1个答案

屠振濂
2023-03-14

malloc系列中的例程跟踪它们保留的所有内存,包括大小。当将地址传递给free时,例程将在其记录中查找该地址,并释放为其分配的空间量。

free只传递一个地址。它没有有关调用方用作参数的指针类型的信息。因为free声明void free(void*),所以传递给它的任何指针都会自动转换为void*,free只接收该void*,而不接收来自int*或其他类型的任何信息。

 类似资料:
  • 问题内容: 我正在运行django应用程序,其中包括matplotlib,并允许用户指定图形的轴。这可能会导致 “溢出错误:超出了Agg复杂度” 发生这种情况时,最多会占用100MB的RAM。通常,我会使用,和释放该内存,但是与该错误关联的内存似乎与该绘图对象无关。 有谁知道我该如何释放记忆? 谢谢。 这是一些给我Agg复杂度错误的代码。 问题答案: 我假设您可以至少运行一次您发布的代码。该问题仅

  • 我有一些和等,但是我没有设置。你觉得会是那样吗? 你有什么想法或建议吗? PS:该应用程序在Ubuntu机器上运行 多谢.

  • 我想首先说,这是我第一次必须处理性能,因为这是我第一次开发一个android应用程序。 该应用程序是一个源代码编辑器,在这里你可以打开文件,修改它们,并将它们保存回来。该应用程序由4个部分组成: 导航器视图:包含打开文件的ListView和打开文件夹的TreeView。 代码视图容器:它保存包含实际代码的视图。 代码容器:这是一个小视图,包含一个文本视图和一个自定义EditText(由我扩展Edi

  • 我们在堆大小为512M的IBM J9 VM上运行weblogic服务器。 今天,服务器因OutOfMemory错误而失败。 我使用Eclipse Memory Analyzer打开了堆转储文件xxx.phd(安装了IBM DTFJ pluign以支持。phd文件)。 垫子给我一份泄漏嫌疑人报告,像这样: 我如何找到创建这个大数组的类? 或者任何帮助我识别大数组的提示?

  • 我正在玩rxjava,发现如果在活动被销毁之前没有完成订阅,则存在内存泄漏的风险,因为“可观察对象保留对上下文的引用”。如果订阅没有取消订阅,则此类情况的演示之一如下所示。已销毁(来源:https://github.com/dlew/android-subscription-leaks/blob/master/app/src/main/java/net/danlew/rxsubscriptions

  • 问题内容: 据说 String类中的方法会导致内存泄漏。是真的吗 怎么样?有什么替代方法吗? 尤其是在寻找答案时, 还有哪些其他原因可以导致Java的内存泄漏呢?这将帮助我在编码时注意。 问题答案: 在过去的JDK版本中,该方法的实现将建立一个新对象,该对象保留对整个char数组的引用,以避免复制它。因此,您可能会无意中仅使用一个字符串来引用一个很大的字符数组。 现在,此方法已更改,并且此“泄漏”