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

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重新分配好内存之后,那么原来的那个空间就被释放掉了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值