阿里面试题整理集合

电面一面(规定控制在一个小时左右)】 程序员

一、malloc和new的区别: 数据结构

(1)malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都是程序运行中申请动态内存和释放内存的。 函数

(2)对于非内部数据类型的对象而言,光用malloc/free没法知足动态对象的要求。对象在建立的同时要自动执行构造函数,对象在消亡以前要自动执行析构函数。因为malloc/free是库函数而不是运算符,不在编译器的控制权限以内,不可以把执行构造函数和析构函数的任务强加于malloc/free。所以C++语言须要一个能完成动态内存分配和初始化工做的运算符new,以一个能完成清理和释放内存工做的delete,new/delete不是库函数。 spa

(3)C++程序常常调用C函数,而C程序只能用malloc/free管理动态内存。 对象

二、 一个C/C++编译的程序占用的内存分为如下几个部分:


一、栈区(stack):程序运行时由编译器自动分配,存放函数的参数值,局部变量值等,。其操做方式相似数据结构中的栈。程序结束时由编译器自动释放。 内存

二、堆区(heap):在内存中开辟的另外一块存储区域。通常由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两会事,分配方式倒相似于链表。 字符串

三、全局区(静态区)(static):编译器编译时即分配的内存。全局变量和静态变量的存储时放在一块的, 初始化的全局变量和静态变量在一块区域,未初始化的全局变量和静态变量在相邻的另外一块区域。程序结束后由OS释放。 编译器

四、文字常量区:常量字符串放在这,程序结束后由系统释放; 编译

五、程序代码区:存放函数体的二进制代码 变量

三、序列化和反序列化,怎么保证数据的正确性

相关文章
相关标签/搜索