存在动态内存分配的意义:
int main()
{
int i = 10;//在栈空间上开辟四个字节的空间
char arr[10] = { 0 };//在栈空间上开辟10个字节的连续空间
return 0;
}
/*
上述开辟空间的方式存在连个特点:
1、空间开辟的大小是固定的
2、数组在申明的时候,必须给定确定的值,它所需要的内存在编译时分配
但对于空间的需求,不仅仅有上述情况。有时候我们需要的空间大小在程序运行时才能知道,如果人为随便给定一个大小,则会造成空间的浪费,
那么数组在编译时开辟空间的方式就不适合了。这时候就需要用动态内存开辟空间了(堆区)
*/
#include<stdlib.h>
#include<string.h>
#include<errno.h>
动态内存函数的介绍(还包含free函数)
1、malloc
int main()
{
int* p=(int*)malloc(sizeof(int)*10);
if (p == NULL)//判断p是否为空指针,如果是,则打印原因
printf("%s", strerror(errno));
else
{
int