面经详情

面试:算法工程师。很棒的一次面试体验,面试难度挺大的,应该没有通过。
Q:C++ 有哪些内存分配方式?
  • 栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,
  • 但是分配的内存容量有限。堆:就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。
  • 如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。
Q:介绍一下 static 关键字。static 修饰函数有什么用?
  • 1)函数体内: static 修饰的局部变量作用范围为该函数体,不同于 auto 变量,其内存只被分配一次,因此其值在下次调用的时候维持了上次的值
  • 2)模块内:static 修饰全局变量或全局函数,可以被模块内的所有函数访问,但是不能被模块外的其他函数访问,使用范围限制在声明它的模块内
  • 3)类中:修饰成员变量,表示该变量属于整个类所有,对类的所有对象只有一份拷贝
  • 4)类中:修饰成员函数,表示该函数属于整个类所有,不接受 this 指针,只能访问类中的 static 成员变量注意和 const 的区别!!!const 强调值不能被修改,而 static 强调唯一的拷贝,对所有类的对象

相关推荐

进入微信小程序

前往微信小程序,查看更多结果

立即前往
看准网浙江大华股份浙江大华股份面试经验浙江大华股份面试经验:面试:算法工程师。很棒的一次面试体验,面试难度挺大的,应该没有通过。
正在招聘C/C++应用软件工程师200 个岗位