zoukankan      html  css  js  c++  java
  • linux C 内存管理方式之半动态

      看到半动态申请内存,第一反应这是什么鬼?

      实际上半动态内存申请很容易理解,在GNU C中使用alloca函数来实现

    #include <stdlib.h>
    void *alloca (size_t size)

      alloca函数可以像malloc一样动态申请内存(注意所申请的内存位置在调用函数的栈里面,页因此在调用函数结束后自动释放)

    好处是显而易见的:既可以自由得申请空间,又不需要手动释放内存。

    坏处是:发生错误时,无法得到一个清晰得错误消息。还有就是,非GNU系统不支持alloca,这是一个BSD扩展,兼容性不好。(其他平台可能会使用C写一个模拟得alloca,但效率不好)

      在GNU C中得大部分情况下,你可以使用可变大小的数组代替alloca。

    区别:  可变大小的数组只在数组名所在的区域有效,超过则释放。alloca 申请的空间则一直保留的函数结束。

         alloca可以在循环体中使用,每次循环都逐步增加内存空间。而可变大小的数组不行。

  • 相关阅读:
    MySQL的事务和视图
    MySQL中的常用函数
    高级查询(一)
    街道管理系统
    深入.NET平台和C#编程的错题
    appium python下的API方法
    Charles 使用教程
    appium,iOS下,ios_predicate等定位方式
    Linux -常用命令
    python-列表以及相关函数认识
  • 原文地址:https://www.cnblogs.com/san-fu-su/p/5741705.html
Copyright © 2011-2022 走看看