C语言第十八集(动态内存管理)

2023-12-13 16:36:03

1.malloc函数可以开辟一块空间,具体搜:

2.malloc函数申请的空间在内存的堆区

而且它只负责帮你申请空间,不负责帮你清理空间

3.free函数可以释放内存

4.free函数释放的是内存中的堆区,具体搜:

5.在free函数调用完后记得把对应的指针设为空指针

6.calloc函数跟malloc函数差不多,但它会为内部的空间赋值0,具体搜:

7.realloc函数可以开辟空间,具体搜

8.realloc函数开辟空间的操作都是在malloc等函数实现开辟好的空间里边运行的

9.realloc函数开辟空间的两种情况搜

10.realloc(NULL,40)与malloc函数一样,因为没得调整空间,那就只能开辟空间

11.malloc,calloc,realloc函数申请的空间,出了作用域是不会主动销毁的

除了使用free函数和程序结束,他们申请的空间都不会主动释放

12.不能对非动态开辟的内存使用free函数

13.不能使用free函数释放一块动态开辟内存的一部分

14.不能对同一块动态开辟内存多次释放

15.动态开辟内存不要忘记释放(否则会导致内存泄漏)

16.对于

int* test()

{

????????int* p = (int*)malloc(100);

? ? ? ?if (p == NULL)

????????{

? ? ? ? ????????return;

????????}

? ? ? ? *p = 10;

????????return 0;

}

函数而言,p仍然是局部变量

在调用完函数后,像上述的函数在调用完后,由于p没了,所以malloc函数所申请的那部分空间就没办法释放了,所以就发生了内存泄漏

17.字符串能直接这样打印

18.传值调用和传址调用的一个特殊例子搜

19.对函数

char* ggg()

{

? ? ? ? char p[ ] = { "123456789" };

? ? ? ? return p;

}

这里边的p[ ]里边的内容在出了函数后会自动销毁

20.一定要记得释放动态内存

21.使用野指针? ?可能? ?会报错

22.结

23.非法访问的一个特殊案例搜

24.柔性数组具体搜:

25.用了realloc重新分配好内存之后,那么原来的那个空间就被释放掉了

文章来源:https://blog.csdn.net/haipengzhou/article/details/134904947
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。