c
chenlvzhou
这个作者很懒,什么都没留下…
展开
-
c语言setjmp与longjmp函数
我们都知道在一个函数内进行跳转,可以使用goto语句,但是如果要在函数之间跳转goto是不能完成的。要想完成函数之间的跳转我们需要借助setjmp和longjmp这两个函数连实现,这都包含在头文件setjmp.h中 函数原型: 1. int setjmp(jmp_buf env):此函数的功能是将函数在此处的上下文保存在jmp_buf结构体中,以供longjmp从此结构体中恢复原创 2015-01-27 15:37:05 · 906 阅读 · 0 评论 -
GNU C __attribute__ 机制简介
GNU C __attribute__ 机制简介 GNU C的一大特色就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。其语法格式为:__attribute__ ((attribute-list))。放在声明的尾部和";"之间。原创 2015-02-02 17:20:40 · 1065 阅读 · 0 评论 -
C语言内存浅谈
操作系统的内存分配问题与内存对齐问题对于地层程序设计来说是非常重要的,对内存分配的理解直接影响到代码质量、正确率、效率以及程序员对内存使用情况、溢出、泄露等的判断力。而内存对齐是常常被忽略的问题,理解内存对齐原理及方法则有助于帮助程序员判断访问非法内存。一般c/c++程序占用的内存主要分为以下五种: 1.栈区(stack):系统自动分配,由程序自动创建、自动释放。函数参数、局部变原创 2015-02-08 21:51:59 · 551 阅读 · 0 评论 -
c语言可变参数列表处理
函数参数的传递原理 函数参数在内存中是以栈的形式存取,从右至左入栈。 参数在内存中存放格式: 在进程中,堆栈地址是从高到低分配的。当执行一个函数的时候,将参数列表入栈,压入堆栈的高地址部分,然后入栈函数的返回地址,接着入栈函数的执行代码,这个入栈过程,堆栈地址不断递减。 总之,函数在堆栈中的分布情况是,地址从高到低,依次是:函数参数列表,函数返回地址,函数执原创 2015-01-21 14:32:13 · 755 阅读 · 0 评论