一、描述内存描述方式以及它们的区别
1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。
2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。
3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。
二、内存分配new/delete和malloc/free的区别
具体区别:
1、new 是c++中的操作符,malloc是c 中的一个函数
2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数
3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。
4、new 和 malloc效率比较,new可以认为是malloc加构造函数的执行。new出来的指针是直接带类型信息的。而malloc返回的都是void指针。
5、new是类型安全的,而malloc不是,比如:
int* p = new float[2]; // 编译时指出错误
int* p = malloc(2*sizeof(float)); // 编译时无法指出错误
分享到:
相关推荐
在C/C++编程面试中,理解基础概念和掌握核心技巧是非常关键的。下面将详细解析题目中提到的一些知识点: 1. **预处理器(Preprocessor)**: - 预处理器在编译过程中执行一系列替换操作,例如`#define`用于定义宏。...
**C++面试题集锦** 在C++面试中,面试官常常会针对各种主题提出问题,以测试候选人的基础知识、编程技巧以及问题解决能力。以下是一些常见的C++面试题,涵盖了一些关键知识点: 1. **C++基础** - **变量与数据...
本面试题中的示例代码提供了一种方法来计算特定日期是星期几。 #### 代码解析: 1. **闰年判断**:通过`leapyear`函数实现。该函数检查输入年份是否为闰年,判断依据是年份能被4整除但不能被100整除,或者能被400...
【标题】:“面试题大全 自己收藏的” 【描述】:“各种Java面试题 给大家免费下载吧!” 本文将详细解析上述Java面试题中的关键知识点,帮助读者深入理解Java编程语言的核心概念。 1. **异常处理机制**: - Java...
根据提供的文件信息,可以看出这是一份包含了多个微软面试智力题目的文档。虽然原文中的内容较为杂乱且不易理解,但可以从中提取出一些关键的问题,并尝试解析这些题目背后的知识点。 ### 微软面试智力题解析 ####...
收集了许多公司的java面试题 基础知识: 1.C++或Java中的异常处理机制的简单原理和应用。 当 JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA...
### 腾讯技术面试题解析 #### 题目一:潼前些(此题表述不清,可能是编码错误或手误) **解析**: - 这个题目看起来不太清晰,可能是由于输入错误或者编码问题导致的文字混乱。如果这是一道关于字符串处理的问题,...
【Java面试题解析】 1. 异常处理机制: Java中的异常处理机制是通过try-catch-finally语句块来实现的。当程序出现异常时,会生成一个异常对象,这个对象会被Java虚拟机(JVM)捕获,并沿着方法调用栈回溯,寻找合适...
嵌入式软件开发是计算机科学领域的一个重要分支,它涉及到硬件和软件的紧密集成,用于构建各种设备和系统的智能控制。对于嵌入式软件开发工程师来说,具备扎实的基础知识、良好的编程技能以及解决实际问题的能力至关...
【JAVA面试题详解】 1. 异常处理机制: Java中的异常处理是通过try、catch、finally和throw关键字来实现的。当程序违反Java语义规则时,如数组越界、空指针异常等,Java虚拟机会抛出异常。异常是java.lang....
第二题解释了C++中的“引用”概念,引用是一个已存在变量的别名,它必须在声明时初始化,并且一旦绑定到一个变量,就不能改变。引用不占用额外的存储空间,不支持数组引用,并且在函数调用中,引用参数和指针类似,...
### C语言面试题知识点详解 #### 一、基础语法 1. **C语言中的基本数据类型**: - 整型:`int`、`short`、`long`、`long long`及其无符号版本(如`unsigned int`)。 - 浮点型:`float`、`double`、`long double...
《C++程序设计代码规范和试题精编》是一份由林锐博士编写的经典文档,旨在帮助程序员巩固C++基础知识并提升编程技能。该文档详细阐述了C++代码的书写规范,包括文件结构、程序版式、命名规则、表达式和基本语句等多...
【Java面试题锦集】 1. **异常处理机制** Java中的异常处理机制是为了处理程序运行过程中的错误和异常情况。当程序违反了Java的语义规则,如数组下标越界、空指针异常等,Java虚拟机就会抛出异常。异常是`java....
【Java面试题汇集】 在Java面试中,常常会涉及到各种技术点,包括但不限于基础概念、异常处理、接口与多态、垃圾回收、线程同步、类与对象的设计等。以下是一些关键知识点的详细解释: 1. **异常处理机制**: ...
因此,收藏这些练习题对于备考者来说是十分有益的。 "牛客OA练习"这个压缩包可能包含了多个练习文件,每个文件代表一个独立的题目。文件名可能直接反映了题目内容,例如可能是对排序算法的实现、链表操作、字符串...
在C++中实现自定义的String类是一个考察基本功的面试题目。自定义String类通常要求实现构造函数、拷贝构造函数、赋值运算符重载和析构函数。实现的目的是管理字符串的内存分配和释放,以及处理字符串的赋值操作。 ...
:hundred_points: 汇聚,分布式、缓存、JVM、设计模式、数据库、算法、区块链、大数据、操作系统、黑客、DevOps、面试题 :fire: 、:fire: 、:collision: 为什么要做这个库。现在好多人都把技术文章放微信公众号,...