记录C++ 3

C++调用C语言编译后的函数为什么要加extern"C"声明

C++有函数重载,调用函数时底层不是函数表面的名字,而C语言里面函数名在底层是一样的。

new和delete

new用于申请内存并初始化对象
delete用于释放内存并销毁对象
cpp 复制代码
#include <iostream>

int main()
{
    int *p=new int(10);
    cout <<*p <<endl;
    delete p;
    p=nullptr;

    int arr= new int[5]{1,2,3,4,5}
    cout <<arr[0] <<endl;
    cout <<arr[1] <<endl;
    cout <<arr[2] <<endl;
    delete []arr;
    arr=nullptr;
    return 0;
    
}
    
    

new和delete与malloc和free的区别

都是动态管理内存的入口,malloc和free需要手动计算类型大小返回void*,new和delete可以自己计算类型大小根据类型返回相应类型的指针
malloc和free只负责分配释放空间,new和delete会调用构造函数和析构函数用于初始化和销毁对象
相关推荐
黄鸭部落格ShiYuYuanFang1 小时前
【分享】软考每日一练与解析-计组 8/12
java·开发语言
m0_617493941 小时前
Python 使用 cryptography 实现数据加密与解密
开发语言·python
大白同学4211 小时前
初始Qt——了解Qt背景
开发语言·qt
代码地平线1 小时前
C++类与对象(中):默认成员函数与日期类实战
c++·笔记·算法
hansang_IR1 小时前
【题解】可持久化区间仿射区间和(Persistent Range Affine Range Sum)
c++·算法·线段树
万山寒2 小时前
python依赖包导出离线安装到没有外网的服务器
服务器·开发语言·python
瑞码空间2 小时前
01背包:动态规划的Hello World
c++·算法·0/1背包问题
特立独行的猫a2 小时前
我用 Rust + Tauri 2 复刻了 N_m3u8DL-CLI:一个 m3u8 多线程下载器
开发语言·后端·rust·m3u8·视频下载器·m3u8dl-cli
程序员雷欧2 小时前
LongAdder
开发语言·python