malooc\free 与new\delete的区别
时间: 2023-10-05 14:12:09 浏览: 51
malooc和free是C语言中的内存分配和释放函数,而new和delete是C++中的内存分配和释放运算符。
区别如下:
1. 语言不同:malooc和free是C语言中的函数,而new和delete是C++中的运算符。
2. 分配方式不同:malooc和free采用堆式分配,而new和delete采用堆式和栈式混合分配。
3. 内存分配方式不同:malooc和free不会调用构造函数和析构函数,而new和delete会调用构造函数和析构函数。
4. 处理错误的方式不同:malooc和free返回空指针表示分配失败,而new抛出std::bad_alloc异常。
5. 参数不同:malooc和free只需指定所需内存的大小,而new必须指定类型。
6. 内存对齐方式不同:malooc和free不保证内存对齐,而new和delete会根据类型的要求自动进行内存对齐。
7. 内存释放方式不同:malooc和free需要手动调用free函数释放内存,而new和delete自动释放内存。
总之,malooc和free是C语言中的内存分配和释放函数,而new和delete是C++中的内存分配和释放运算符,它们在语言、分配方式、内存分配方式、处理错误的方式、参数、内存对齐方式和内存释放方式等方面有所不同。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)