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重新分配好内存之后,那么原来的那个空间就被释放掉了
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!