一.怎样建立动态内存存储
对动态内存存储是通过系统提供的库函数来实现的,主要有malloc,calloc,free,realloc这4个函数
1.用malloc函数开辟动态内存区
其函数原型为void* malloc(unsigned int size),其作用是在内存的动态存储区中分配一个长度为size的连续空间。形参size的类型定为无符号整形。此函数的地址是所分配区域的第一个字节的地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的第一个字节。
注:此指针的类型为void,即不指向任何类型的数据,只提供一个纯地址。如果此函数未能成功的执行,则返回空指针。使用时要引用头文件stdlib.h或malloc.h
eg:
int main()
{
int* p1 = (int*)malloc(40);
for (int i = 0; i < 10; i++)
{
*(p1 + i) = i;
printf("%d", *(p1 + i));
}
if (p1 = NULL)
{
perror("malloc");
}
free(p1);
p1 = NULL;
}
在使用完动态内存函数后,记得要使用free函数来释放动态开辟内存,以此防止栈溢出
如果size为0,结果取决于编译器。
2.用calloc函数开辟动态存储区
其函数原型为void* calloc(unsigned n,unsig