alloca() 是什么?为什么不提倡使用它?
2017-11-11 10:23
369 查看
在调用 alloca() 的函数返回的时候, 它分配的内存会自动释放。也就是说, 用 alloca 分配的内存在某种程度上局部于函数的 ``堆栈帧" 或上下文中。
alloca() 不具可移植性, 而且在没有传统堆栈的机器上很难实现。 当它的返回值直接传入另一个函数时会带来问题, 如 fgets(alloca(100), 100, stdin)。
由于这些原因, alloca() 不合标准, 不宜使用在必须广泛移植的程序中, 不管它可能多么有用。 既然 C99 支持变长数组(VLA), 它可以用来更好的 完成 alloca() 以前的任务。
alloca() 不具可移植性, 而且在没有传统堆栈的机器上很难实现。 当它的返回值直接传入另一个函数时会带来问题, 如 fgets(alloca(100), 100, stdin)。
由于这些原因, alloca() 不合标准, 不宜使用在必须广泛移植的程序中, 不管它可能多么有用。 既然 C99 支持变长数组(VLA), 它可以用来更好的 完成 alloca() 以前的任务。
相关文章推荐
- alloca() 是什么?为什么不提倡使用它?
- alloca() 是什么?为什么不提倡使用它?
- 为什么使用srping框架,它有什么优点?
- java下Class.forName的作用是什么,为什么要使用它(转)
- 对为什么使用访问器(getter),以及什么是继承的一点看法
- JDK动态代理干了什么事情?为什么我的事务会不起效?spring的事务到底应该怎么使用?原理是什么?
- HBase是什么?为什么要使用HBase?
- WebSocket 是什么原理?为什么可以实现持久连接?什么情况使用WebSocket
- java下Class.forName的作用是什么,为什么要使用它
- iOS 面试题~用@property声明NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- jdbc是啥?为什么使用jdbc?jdbc的原理是什么?
- Maven是什么,以及为什么要使用Maven
- java下Class.forName的作用是什么,为什么要使用它
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 为什么要使用数据库连接池 、好处是什么
- PHP 为什么要使用命名空间,命名空间的作用是什么,如何更好的使用命名空间【详解】
- 什么是mvc,为什么要使用它
- 为什么使用srping框架,它有什么优点?
- 黑马程序员-- 高级网络编程 什么是泛型?泛型的定义?泛型如何使用?为什么要使用泛型?
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?