zoukankan      html  css  js  c++  java
  • inline的小知识

    在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。

    栈空间,其实栈空间是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。

    #include <iostream>  
    #include <string>  
    using namespace std;  
      
    inline string dbtest(int a); //函数原形声明为inline即:内联函数  
      
    void main()  
    {  
        for (int i=1;i<=10;i++)  
        {  
            cout << i << ":" << dbtest(i) << endl;  
        }  
        cin.get();  
      

    string dbtest(int a)//这里不用再次inline,当然加上inline也是不会出错的  
    {  
        return (a%2>0)?"奇":"偶";  
      
    }  

    上面的例子就是标准的内联函数的用法,使用inline修饰带来的好处我们表面看不出来,其实在内部的工作就是在每个for循环的内部所有调用dbtest(i)的地方都换成了(i%2>0)?"奇":"偶"这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗 .

    inline的使用是有所限制的,inline只适合函数体内代码简单的函数使用,不能包含复杂的结构控制语句例如while switch,并且不能内联函数本身不能是直接递归函数(自己内部还调用自己的函数)。
      

  • 相关阅读:
    为什么linux有足够的内存还进行swap?
    vmstat命令的使用
    Windows远程服务器不能复制粘贴
    Windows可以ping通百度,但是用浏览器打不开网页
    java形式参数分别是基本类型和引用类型的调用
    Ubuntu16.04安装Python3.6 和pip
    Python2/3共存,pip2/3共存
    multiprocessing模块
    Python-进程与线程
    鼠标不能动,插上了但没反应
  • 原文地址:https://www.cnblogs.com/guozqzzu/p/3582657.html
Copyright © 2011-2022 走看看