new和malloc都用于在堆上分配内存,new是c++中的关键字,分配内存后还会调用构造函数 简单来说,对于一个赋值表达式而言, 左侧的称之为左值,右侧的称之为右值。左值一般为常见的定义过的变量,在栈或堆上有具体的存储空间,右值一般为临时对象,作用域只限于赋值表达式期间。右值常见的有数字/字符常量,函数返回的非引用值,临时构造的对象。 内存泄漏是由于在堆上new出来的空间,没有delete释放掉导致的。可以通过重载new/delete加入log信息,比较申请和释放的内存,从而得知是否有内存泄漏;也可以通过各种检测工具,Windows下有UMDH,Linux下有valgrind工具 操作系统为了解决多进程管理中安全和效率问题,为每个进程分配的是虚拟内存地址,各内存地址相互隔离。在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,用户空间又分为栈,堆,数据,程序文件等。 同步指的一条指令执行完,再执行下一条执行,各指令按照顺序依次执行,异步指的是,两条指令可以同时执行。阻塞指的是一个线程需要等待另一个线程的结果时,阻止当前线程继续向下执行,而非阻塞则是不阻止当前线程。 单体架构、分布式应用、微服务与Serverless1. new和malloc什么区别?
2. std中unorded_map,map,multimap有什么区别?
3. C++中左值和右值的概念,以及使用右值常见的场景
4. C++内存泄漏怎么出现,如何定位与解决
5. 解释下linux下虚拟地址空间
6. 同步/异步与阻塞/非阻塞的区别
7. 有哪些架构类型