首页 > free()和realloc()中 指针指向的内存区怎么理解?

free()和realloc()中 指针指向的内存区怎么理解?

free()和realloc()中
指针指向的内存区怎么理解?


free()
你租的房子到期后已交还房东,但你仍拿着钥匙,可以进去使用,但法律上房子的使用权已不属于你
-----------虽然有指针,但原则上它指向的空间已不归你用,否则后果自负!

realloc()
你租个50平米的房子,然后想换个大的,房东可能会把另一半40平米的一起租给你,这样你就不用搬家了;
房东也可能没有另一半房子,但在别的地方还有一套90平的,他把那套房子租给了你,因此你不得不搬家!
-----------返回的指针可能是原值,也可能已变化!


指针在创建后,需要申请一段新的内存空间来初始化它,也就是让这个指针指向一个具体的位置,这样才能真正的初始化指针,这个指针才能被调用。


free和realloc指向的内存区叫做堆,不知道你具体想了解什么呢?
关于堆的特性,随便说几条:
1、大小是动态的(但也有个上限,Linux下面不到3G),需要的时候手动申请,不需要的时候手动释放,没有人帮你回收那些不用了的内存;
2、生命周期伴随着进程而存在的,在某函数中申请的内存在函数退出之后仍然存在;
3、访问权限是可读可写,也就是说没有操作系统的保护,堆上的数据很可能被某个飞了的指针所破坏;
关于指针,就是一个地址,指向某个内存,你可以通过这个地址访问某个内存单元(前提是该单元可访问)。
乱说一通,问题还是不知道题主想问什么

【热门文章】
【热门文章】