内存分配
问题描述:
1.内存分配
void main(void)
{
int *ptr1;
ptr1 = (int *)malloc(..);
}
2.
void main(void)
{
static int *ptr2;
ptr2 = (int *)malloc(..);
}
我想问的是如何分配的内存PTR1 & PTR2做了什么?
答
ptr1
指针本身被分配在堆栈上。 ptr1
指向堆上的内存。
ptr2
指针本身是在程序启动时分配的(在调用main
之前)并且是全局的,但仅在main
中才可见,因为它在其范围内声明。 ptr2
也指向堆上的内存。
在main
之外声明ptr2
只会使其在下面的所有函数中都可见,但其存储将是相同的。
在C中,不需要指定'malloc'的返回值。另外,'void main(void)'应该至少是'int main(void)'。 – 2011-04-28 07:19:02