【发布时间】:2014-01-10 15:36:46
【问题描述】:
我是一名新的 C 开发人员。我已经用 Java 编程 3 年了。 我注意到我必须在 C 中进行手动内存分配。
但是,当涉及到指针和内存分配时,我仍然模棱两可。 我会说我理解的,如果有人对我要说的话有任何意见,请纠正我。
假设我有:
int *a;
所以它的作用是创建一个名为 a 的指针,它指向一个整数值。
int *a = address;
如果我打印地址,我会得到地址。
假设我想要这个值,我做我们所说的取消引用和
int *a = *value;
如果我在这种情况下打印值,我会得到存储在内存中的实际数字。
我在我正在使用的电子书中注意到,有时我们在堆中分配内存。 总是这样吗?每次我需要对字符串使用指针时,例如使用 char*,我必须使用 alloc() 和 sizeof() 根据预期类型的大小分别分配内存?
【问题讨论】:
-
指针并不总是在堆中,如果这就是你要问的。
int b; a = &b;将a设置为指向b,而b通常位于系统堆栈上。如果你尝试realloc或free它,通常会引起欢闹。 -
“欢闹常常接踵而至”——爱它! :)
标签: c memory heap-memory allocation