- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我知道 realloc
会在必要时释放内存,我知道 C 的第三条规则 - “对于每个 malloc
必须有一个相等且相反的 免费
”...但这两者如何协同工作?
最好用代码描述这种情况:
int main()
{
myStruct **myStructArray;
int i, num_elements;
num_elements = getnumber(); // gets value for num_elements
myStructArray = (myStruct **) malloc(num_elements * sizeof(myStruct*));
for (i=0; i<num_elements; i++)
myStructArray[i] = (myStruct *) malloc(sizeof(myStruct));
// so far so good...
num_elements = getnumber(); // gets new, LOWER value
myStructArray = realloc(myStructArrary, num_elements * sizeof(myStruct*));
// rest_of_code, and necessary free loop for myStructArray etc...
}
显然以上只是一个片段,但是一个片段画出一千个字。
这会造成内存泄漏吗?我知道对 realloc
的调用将释放指针的内存,但我可以看到支持和反对仍有大量内存被遗忘的可能性的争论。
可以通过将 int number_elements_new
合并到代码中并在调用 之前循环
以释放(现在为 NULL)指针。free
-ing 多余的 myStruct
来避免泄漏realloc
如果 realloc
完成了笨拙的工作并释放了所有相关的内存,那就太好了,否则我必须仔细搜索以确保没有遗漏任何东西 - myStruct
本身包含分配的内存等。
感谢您的建议...
最佳答案
malloc
、realloc
和 free
不知道内存的用途。如果您正在使用内存来存储指向其他动态分配内存的指针,那么您需要整理一下!
另请注意,您在代码片段中使用 realloc
的方式可能不安全。如果 realloc
失败,它会保留未释放的原始内存,并返回 NULL
。最佳做法是将返回值分配给一个临时指针,然后进行检查。参见例如http://www.c-faq.com/malloc/realloc.html .
关于c - realloc 和 malloc 过去的幽灵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14523690/
我有一个 IDE 断点 (delphi-xe),每次编译和运行程序时它都会重新出现。我该如何摆脱它。 Delphi 在哪里保存有关断点的信息? 更新: 1.断点未在“Breakpoints”面板中列出
(编辑)此问题已解决 - 请参阅答案。 我遇到了一个我以前从未见过的 Java/Swing 和 Netbeans 的不幸问题。我在 Netbeans 中设计了一个基本的纸牌游戏形式,它看起来运行得很好
在我的 iOS 应用程序中,当使用以下方式从 View Controller 2 转换到 1 时: let storyBoard: UIStoryboard = UIStoryboard(name:
我有一个名为 Notebook 的父实体,与 Page 实体具有一对多关系。我有一个 ScrollView ,显示所有笔记本对象及其封面,并且我有一个带有 View Controller 的模式序列,
CIVITASINC - ATLANTIC AVENUE (手机浏览器查看) 所以...当您在 iphone 或 android 上加载上面的页面时,它会使用 Wordpress 插件 Portfol
我目前正在用 Java 制作吃 bean 人游戏。不过我有一个关于鬼魂的问题。 我知道鬼魂的攻击方式并不完全相同。我首先想研究让鬼魂去追吃 bean 的基础知识,而不用担心其中的差异。 我想问你们这些
我在使用 SQL Server 2005 数据库时遇到了一些问题,它似乎一直存在幽灵约束。我有一个脚本可以删除有问题的约束,做一些工作,然后重新添加相同的约束。通常,它工作正常。然而,现在它不能重新添
例如在 map 中: {"test-1" 23, "test-2" 456, "test-3" 23} 如何找到具有值 23 的键? 最佳答案 我认为您不需要幽灵来做到这一点,只需按值过滤即可。
我正在使用Sortable from Rubaxa对 Bootstrap 表中的行进行排序。 表格行的单元格包含 Bootstrap 输入。 现在,行排序正常,但“幽灵”图像仅显示行中的按钮,而不显示
我正在为我的博客开发一个 Ghost 模板。我想在首页上只看到来自带有特定标签(例如“新闻”)的帖子的最新帖子。 是否可以在 foreach 中按标签过滤帖子环形? 还有其他解决办法吗? (首先想到的
我是一名优秀的程序员,十分优秀!