动态内存分配即分配内存大小在运行时才确定,一般在堆中分配。
我们提供的服务有:网站设计、成都网站设计、微信公众号开发、网站优化、网站认证、康巴什ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的康巴什网站制作公司
C语言动态内存分配相关的函数如下几个:malloc、calloc、realloc、free;
malloc函数游亏宽的使用比较直接,一个成功的malloc调用返回分配的size大小的内存的指针。失败时返回NULL并将错误代码置为ENOMEM。
calloc函数可以分配nr个size大小的内存空间,一般用于一组空做struct结构体的分配。
realloc函数将ptr指向的内存空间重新分配大小为size并返回新的内存首地址。
free函神亮数释放前三个函数申请的内存空间,所以,使用前三个分配函数分配的内存一定要free掉。
#includeiostream.h
#include让晌string.h
void getmemory(const char ** p)
{
*p = new char[20];
}
int main()
{
char *str=NULL;
getmemory(str);
strcpy(str,"qew");
return 0;
}
说明为什么会让str获取到p开辟的空间。顷滑物
那么void getmemory(const char ** p)这个函数形参是什么!形参实际上是p,p是调用函数的一份拷贝,p改变了调用的实参是不会改变的(你的程序的错误)。当我改变的是*p时,因为p是一份指针拷贝,p与实参指针str保存同一块地址,当改变*p时对应的实参指针str指向的内容也就改变了。
仿佛
int a = 5;
int b = a;
b = 3;
cout a;//a依然是5,因为b是a的一份拷贝,b变了,a不会变
int a = 5;
int *p = a;
*p = 3;
cout a;//a为3,因为p中存的是a的地址,当改变p指向的内容时,实际上就是改变a的雀液内容
函数原型:派稿
void*
malloc(int
size);
参数:size
需要分配的内存大小。
返回值:申指羡如请到的内存地址(void*)。
说明:
如果返回NULL则说明唯启申请失败。