Bootstrap

动态内存(c)

大家好,今天我们就来聊聊c语言中动态内存的一些知识,相信大家很多时候在申请空间时总会有空间不够用或者太大用不完的情况吧,这个时候使用动态内存就是一个不错的选择,下面我们便来了解一下。

1.malloc函数

这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针,注意并不是每次开辟空间都会成功,如果成功就返回一个开辟好空间的指针,失败则会返回一个空指针,因此使用malloc时一定要对它的返回值做检查。

malloc返回值是一个泛型指针,这个指针是什么类型由使用者决定(强制类型转换)。

如果你申请0个字节空间,malloc的行为是未定义的,取决于编译器。

我们申请完空间来使用后,如果不需要使用时便要释放空间。

53085cff618e4e73801f4b240fb964e0.png

 

2.free函数

这个函数就是用于释放空间的,参数为我们申请空间的那个指针(释放后最好将指针置为空指针避免成为空指针)。

当然使用free时有几个误区要注意一下

一.如果参数ptr指向的空间不是动态开辟的,那free函数的行为是未定义的,如果参数ptr是空指针,那么free函数什么都不做。

d0044b60514343bab6ad0a9c6585d054.png

 87dd338b43f249e7972a5c728d010a59.png

 

二.使用free函数时应避免多次释放,造成系统崩溃。

 af7c3a3936bb46c7a64733887e0dda98.png

 

那么今天分享就到这里,明天给大家讲讲另外两个和内存泄露的知识点。

谢谢大家的阅读!!!

f9cbd50d89024a40b8b9907561d832fb.png

 

;