C - 具有非动态元素的结构的动态分配

标签 c dynamic allocation

我想知道如果我有这样的东西,结构将在内存中分配到哪里。

typedef struct {
    int c;
}  A;

A * a = (A)* malloc(sizeof(A));
a -> c = 2;

C会分配在堆区,对吧? 此外,如果我用

释放内存
free(a);

C占用的内存区怎么办?

最佳答案

A * a = (A)* malloc(sizeof(A));

这行是不正确的,如果你想进行显式转换,语法是(A*),而不是(A)*

无论如何,是的,malloc 在堆上分配内存(一般和非奇异系统)。之后会发生什么取决于操作系统和您使用的 libc 的实现。然而,大多数情况下,释放的内存保存在列表中以供 malloc 将来使用。

关于C - 具有非动态元素的结构的动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49531441/

相关文章:

c - 使用相似代码时出现奇怪的编译器投诉

java - Android 中使用 SharedPreferences 的动态列表

c# - ASPX 页面的类似 SlowChetah 的转换?

c - *****double 的合适替代品

c++ - 可以在函数声明中声明固定长度数组吗?

c - 数组拼图 :generating all possible combinations

C. 输入 double 。

excel - 在不同的工作表上输入时更改从一个工作表派生的用户表单标签

c++ - 打开简历;如何释放 IplImage*?

Power PC CPU 架构上的 Clang?