• C/C++面试题目集锦


    1、指针与引用的区别

    从四个方面出发考虑不同点

    (1)从定义出发,指针是一个变量,所存内容为指向变量在内存中的存储地址;而引用只是原变量的一个别名,和原变量占同一个存储单元。

    (2)初始化:指针可以初始化为NULL,可以改变指向的内容;而引用不可以,在使用时必须初始化,且初始化后不能改变。

    (3)使用:在使用时,指针可以多级(**p),而引用只能一级;引用使用时无需解引用(*),指针需要解引用。

    (4)大小:"sizeof引用"得到的是所指向的变量(对象)的大小,而"sizeof指针"得到的是指针本身的大小

    2.堆和栈的区别

    2.1 概念

    堆、栈是一种数据按序排列的数据结构。

    在一个由C/C++编译的程序占用的内存分为四部分:栈区、堆区、静态存储区、代码区。

    2.2 区别

    (1)堆栈空间分配

       栈:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。

       堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。在运行时动态分配内存。  

    (2)堆栈缓存方式

       栈:一级缓存,使用完立即释放。

       堆:二级缓存

    (3)堆栈数据结构区别

    栈:栈是一种后进先出的数据结构。

    堆:可以看成是一棵树。

    (4)申请大小的限制

    栈:栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意  
      思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有  
      的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将  
      提示overflow。因此,能从栈获得的空间较小。    
    堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储  
      的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小  
      受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。    

    但是容易产生碎片。

    只此一生,与子白头
  • 相关阅读:
    Java自带工具jstack故障分析的一个案例
    当spring 容器初始化完成后执行某个方法
    tomcat的maxThreads、acceptCount(最大线程数、最大排队数)
    RESTful API 设计指南
    GitHub简单使用入门
    Newton's method
    把一个文件夹下的多个excel文件合并到同一个excel的一个sheet里
    multimap的使用 in C++,同一个关键码存在多个值
    pandas把多个sheet读进一个DataFrame
    数据预处理之Minkowski距离计算
  • 原文地址:https://www.cnblogs.com/Miss-Bueno/p/7727580.html
Copyright © 2020-2023  润新知