c语言里面有个东西叫函数
辣么~
你们看下以下这个函数,它干了什么?
嗯~看起来是一个空函数,什么都没干!
对于c语言来说,因为函数里面什么程序都没有,所以什么都没有执行,所以称之为空函数
!然 而!
它真的什么都没干吗?未必。
程序是什么都没干,但是编译器却干了很多事情!!!
我们来看下这个空函数的反汇编
可以看到,即使我们只是写了一个空函数,但是编译器还是为我们在暗地里做了很多手脚
做了什么事情?
开辟内存空间!!!
由此可知:每个程序运行都是需要占用内存的,就算程序没有用到,编译器也会自动开辟一块地方给函数,当程序执行完成之后再释放内存,留给下一个程序继续使用。
————————————————————————————————————————
辣么
如果我们不想让编译器自动为我们开辟空间,那要怎么办呢?
↓↓↓↓↓↓↓↓在这里有一个东西可以使用↓↓↓↓↓↓↓↓
裸函数
如图上所示,按照以上规定的格式书写函数,函数将变成一个裸函数
意思是告诉编译器,这个函数不进行任何操作,不能添加任何代码!!
↓↓↓↓↓↓↓所以我们看到的反汇编是这个样子的↓↓↓↓↓↓↓
真正意义上的空函数,比空函数还空的函数
但是这样可以运行起来吗?
可以看到,即使编译器没有报错,但是程序却直接崩溃了
为什么?
为什么?
为什么?
因为裸函数里面什么都没有,所以里面的堆栈无法平衡,所以程序奔溃了
那要怎么办呢?
因为裸函数里面什么都没有,所以之前编译器为我们做的东西,现在我们要自己动手做
怎么做?
↓↓↓↓↓↓↓按照以下的格式↓↓↓↓↓↓↓