- int val = 20;
- int a[10]={0};
上面我们声明并定义了一个大小为4字节的整型变量,一个容量为10*4字节的整型数组。
开辟方式:我们在栈上开辟。
2.1 malloc和free
void* malloc (size_t size);
void free (void* ptr);
- #include
- #include
- int main()
- {
- int a[10] = {0};
- int* ptr = (int*)malloc( 10* sizeof(int));
- if (NULL != ptr)//判断ptr指针是否为空
- {
- int i = 0;
- for (i = 0; i < 10; i++)
- {
- *(ptr + i) = i;
- printf("%3d",i);
- }
- }
- free(ptr);//释放ptr所指向的动态内存
- ptr = NULL;
- return 0;
- }
malloc和free都声明在 stdlib.h 头文件中。 使用要包含头文件。上面我们让一个指针ptr指向了开辟了10个整型大小空间。并赋值。然后释放。
我们可以按F11开始调试,具体可以看看作者这篇文章。
最后运行完free,空间就会释放出来。
如果没有free函数,当程序结束后同样空间也会释放,但是,就像你借书一样,你又不看,别人想用又用不了,这样的事其实就很没意义了。好习惯是有借有还。我们在释放完空间后,应该把指针置空,防止要使用这个指针时这个指针还是指向这块分配的区域,导致出错。
C语言还提供了一个函数叫 calloc , calloc 函数也用来动态内存分配。
void* calloc (size_t num, size_t size);
它与malloc功能一样。但是它在使用的时候会初始化数据为0。
(int*)calloc(10,sizeof(int))=(int*)malloc(10*sizeof(int))+初始化数据为0
void* realloc (void* ptr, size_t size);