问题标签 [malloc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
868 浏览

c - 通过函数分配数据 (ANSI C)

我很想知道如何通过函数分配数据,并且在函数返回后数据仍然被分配。这既适用于基本类型(int、char**)也适用于用户定义类型。下面是两个代码片段。两者都在函数内进行分配,尽管在返回之后分配进行。

用户定义类型的行为与以前相同:

有任何想法吗?我想我需要将指针作为参考传递,但我该怎么做?

在此先感谢,防晒霜

0 投票
8 回答
5219 浏览

c - 操作内存时是否需要乘以sizeof(char)?

当使用 malloc 并进行类似的内存操作时,我可以依赖 sizeof( char ) 始终为 1 吗?

例如,我需要为 N 个类型的元素分配内存char。乘以sizeof( char )必要:

还是我可以依靠 sizeof( char ) 始终为 1 并跳过乘法

我完全理解sizeof在编译期间进行评估,然后编译器甚至可能编译出乘法,因此性能损失将是最小的并且很可能为零。

我主要询问代码清晰度和可移植性。类型是否需要这种乘法char

0 投票
24 回答
161517 浏览

c - 为什么使用 alloca() 不被认为是好的做法?

alloca()在堆栈上而不是在堆上分配内存,如malloc(). 因此,当我从例程返回时,内存被释放。所以,实际上这解决了我释放动态分配内存的问题。释放通过分配的内存malloc()是一个令人头疼的问题,如果以某种方式错过会导致各种内存问题。

alloca()尽管有上述功能,为什么不鼓励使用?

0 投票
4 回答
1019 浏览

c - 如何在 C 中的结构内设置字符?

如何为结构内的 char 变量(不是 char 指针)分配内存?
(变量名称是葡萄牙语,如果有点令人困惑,请见谅)

我有这个结构:

这是insere()设置从新节点中的输入文件读取的值的函数:

NovoEstado->flag = flag;不起作用......
在我设置它之后,如果我打印NovoEstado->flag我得到正确的值,但如果我for在函数结束时将它放在后面,当我打印时NovoEstado->flag我得到 NovoEstado->rotulo 的第一个字符...
当我尝试打印时也会发生同样的flag情况main()...

我认为那是因为我没有正确分配内存空间flagin Insere(),对吗?我该如何解决?

我很确定这是一个非常简单的问题,而且我可能曾经知道这一点,但我忘记了并且在任何地方都找不到它......所以任何帮助将不胜感激

编辑

按照 ocdecio 的提示,我创建了一个指向二维数组的指针,以便获得一个动态的 3 维数组。
我的目标是有一个像这样的“表”:

行数是动态的,但它始终是 2 个 10 个字符的字符串的数组。

所以现在这就是我在主要做的事情:

但这不起作用...
这是从文件中读取的输入

但即使在我打电话之前,我Insere也没有按照我想要的方式分配正确的值instrucao,因为这是那个输出printf

而不是我的目标

怎么了?

(在有人问之前,这是作业一部分,但不是作业。我的任务是制作一个确定性有限自动机最小化器,这只是我得到的与数据输入相关的错误)

非常感谢

0 投票
23 回答
111459 浏览

c - 释放后将变量设置为NULL

在我的公司有一条编码规则,即在释放任何内存后,将变量重置为NULL. 例如 ...

我觉得,在上面显示的代码这样的情况下,设置为NULL没有任何意义。还是我错过了什么?

如果在这种情况下没有任何意义,我将与“质量团队”一起将这个编码规则删除。请指教。

0 投票
5 回答
341 浏览

memory - 检查正在运行的程序中的可用 RAM 量

在一次工作面试中,我的一个朋友被要求编写一个程序来测量可用 RAM 的数量。预期的答案是以malloc()二进制搜索方式使用:分配越来越大的内存部分,直到收到失败消息,减小部分大小,并对分配的内存量求和。

我相信这种方法将测量虚拟内存的数量,而不是物理内存。但我对这件事感到好奇。

有没有办法在不使用的情况下从程序中知道可用 RAM 的数量exec(dmesg |grep -i memory)

0 投票
7 回答
6361 浏览

c - 当 malloc/free 出现在 C 中的循环中时出现分段错误

我有一个基本上看起来像这样的程序:

这只是骨架形式,但它希望能提供足够的图片。无论如何,它通常运行良好,但对于 n1、n2 的某些值,free(cpplptr) 似乎会导致分段错误。它只被调用一次,我在 malloc() 调用 cplptr 之后和 cplptr 的相应 free() 之前检查地址。

地址匹配,这意味着 free() 应该释放它应该释放的东西,对吧?gdb 给出程序接收到的信号 SIGSEGV,分段错误。0xb7ce179b 在?? () 来自 /lib/tls/i686/cmov/libc.so.6 和步骤找不到当前函数的边界

有没有另一种方法来实现类似的东西来避免分段错误?

感谢一百万您的建议!知道发生了什么吗?

0 投票
5 回答
904 浏览

c - 这会泄漏内存吗?

我做了一个小函数来连接字符串并返回组合字符串。但是,由于我将内存分配给函数中的第三个变量,当函数完成时内存会被释放还是会保留在那里,需要我稍后释放它?如果我需要释放它,最时尚的解决方案是什么?

这是测试代码。它有效,但我无法判断我的工具是否释放了该内存。

0 投票
7 回答
1096 浏览

c - 没有使用 malloc 分配内存

我在分配内存时遇到了 malloc 问题:

我收到类似的错误

但是,如果我使用 428 或 1024 而不是 20 而不是分配内存。你能告诉我问题出在哪里...谢谢。

0 投票
7 回答
38319 浏览

c - 零大小的malloc

很简单的问题,我做了以下程序:

它不会在我的机器上出现段错误。它是 stdlib malloc 和免费的可移植行为,还是我在找麻烦?

编辑:似乎不可移植的是malloc返回的值。问题是关于 malloc(0) + free 组合,而不是 ptr 的值。