我想知道如果我有这样的东西,结构将在内存中分配到哪里。
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/