美文网首页
什么是句柄?

什么是句柄?

作者: wang_1990 | 来源:发表于2020-08-17 23:36 被阅读0次

    简单说,Handle就是指针的指针。

    在c语言里面,假如你通过malloc申请一段内存空间,heap给你一个指针直接指到你可用内存的起始位置。在你释放之前操作系统无法将这段内存移动。

    至于为啥要移动,因为你在程序各处调用大小不一的malloc会产生内存碎片。碎片多了总之不好,最好把碎片移到一块,这样就又有大块的内存空间可以malloc了。这个过程叫defragmentation。跟windows上硬盘碎片整理一样。

    malloc直接给你指针的话就不方便heap管理内存。因为只要你不free,它就不敢动那块内存。但是假如给你指针的指针,增加一次跳转。动态内存管理内部维护一个表,第一次对指针dereference进入这个表,再来一次才到你可用的内存块。这样动态内存管理就可以把真正的那段内存定期合并起来,然后只要调整那个表指向新的地址。

    相关文章

      网友评论

          本文标题:什么是句柄?

          本文链接:https://www.haomeiwen.com/subject/mggcjktx.html