当前位置: 首页 > news >正文

游戏推广网站怎么做北京建设网证书查询平台官网

游戏推广网站怎么做,北京建设网证书查询平台官网,网站建设与设计致谢,网站有没有做网站地图怎么看C内存管理与编译链接 1. 内存模型 *问题类型#xff1a; C 内存分区#xff08;栈、堆、全局/静态存储区、常量存储区、代码区#xff09;#xff1f; 分区存储内容生命周期特点栈 (Stack)局部变量、函数参数、返回值函数结束自动释放自动管理#xff0c;快速高效堆 (Heap…C内存管理与编译链接 1. 内存模型 *问题类型 C 内存分区栈、堆、全局/静态存储区、常量存储区、代码区 分区存储内容生命周期特点栈 (Stack)局部变量、函数参数、返回值函数结束自动释放自动管理快速高效堆 (Heap)动态分配的内存new/malloc手动释放delete/free大容量分配慢需手动管理全局/静态存储区全局变量、静态变量static程序启动分配结束释放初始化为零常量存储区字符串常量、const 全局变量程序运行期间只读修改导致段错误代码区程序指令二进制机器码程序运行期间 栈和堆的区别 特性栈堆管理方式编译器自动管理程序员手动管理分配速度极快移动栈指针较慢搜索可用内存块空间大小较小默认 MB 级较大接近系统内存上限内存碎片无可能产生碎片访问安全自动边界检查部分系统无保护易越界 内存泄漏Memory Leak是什么如何检测和避免 定义已分配的堆内存无法被访问且未释放 检测方法 工具Valgrind、AddressSanitizer、智能指针计数日志重载 new/delete 记录分配点 避免措施 cpp// 使用智能指针C11 auto ptr std::make_uniqueMyClass(); // 自动释放// RAII 原则 class ResourceHolder {Resource* res; public:ResourceHolder() : res(new Resource) {}~ResourceHolder() { delete res; } // 析构时释放 };野指针、悬空指针、空指针的区别 类型定义示例风险野指针未初始化的指针随机地址int* p; *p 10;崩溃/数据损坏悬空指针指向已释放内存的指针int* p new int; delete p; *p 20;未定义行为空指针显式指向 nullptr 的指针int* p nullptr;安全可检测 new/delete和malloc/free的区别 特性new/deletemalloc/free语言C 运算符C 库函数构造/析构调用构造函数/析构函数仅分配/释放内存类型安全返回具体类型指针返回 void*需强转内存大小自动计算new T手动指定字节数sizeof失败处理抛出 std::bad_alloc返回 NULL重载支持运算符重载不可重载 new T[]和delete[] T的匹配使用原因 内存布局差异 MyClass* arr new MyClass[3]; // 实际内存布局 // [元素数量] [对象0] [对象1] [对象2] // ^ ^ // | 返回给用户的指针不匹配的后果 使用 delete 而非 delete[] 仅调用第一个元素的析构函数错误的内存释放方式可能少释放前缀计数区 结果内存泄漏 未定义行为UB 2. 编译与链接 *问题类型 C程序的编译链接过程预处理、编译、汇编、链接 阶段输入输出核心操作工具预处理.cpp 源文件.i 预处理文件宏展开、头文件包含、条件编译cpp / gcc -E编译.i 文件.s 汇编文件语法分析、语义检查、生成平台相关汇编代码gcc -S汇编.s 汇编文件.o 目标文件汇编指令 → 机器码二进制as链接多个 .o 文件可执行文件符号解析、地址重定位、库合并ld 示例流程 g -E main.cpp -o main.i # 预处理 g -S main.i -o main.s # 编译 g -c main.s -o main.o # 汇编 g main.o utils.o -o app # 链接什么是符号表 定义目标文件.o中记录全局符号信息的结构 关键内容 导出符号当前模块定义的全局函数/变量供其他模块使用未解决符号当前模块引用但未定义的函数/变量需链接时解析 查看工具 nm main.o # 查看符号表 objdump -t lib.a # 静态库符号分析动态库DLL/SO和静态库LIB/A的区别、优点和使用场景 特性静态库.lib/.a动态库.dll/.so链接时机编译时链接到可执行文件运行时由系统加载文件组成目标文件.o集合已链接的共享目标文件内存占用每个进程独立副本内存浪费内存中仅一份副本多进程共享更新部署需重新编译整个程序替换库文件即可ABI 兼容前提下加载速度启动快无运行时加载开销启动稍慢需加载库使用场景小型程序无依赖环境嵌入式系统大型应用插件系统公共库 创建示例 # 静态库 ar rcs libutils.a utils.o# 动态库Linux g -shared -fPIC -o libutils.so utils.cppextern C的作用 核心功能禁用 C 的名称修饰Name Mangling实现 C 语言兼容 使用场景 C 调用 C 库函数C 调用 C 函数需反向包装 示例 // C 代码中声明 C 函数 extern C {void c_library_function(int param); // 按 C 规则编译 }名称修饰对比 C 修饰后_Z6funcv含参数类型信息C 修饰后func简单函数名 单一定义规则ODR是什么 核心原则 变量/函数全局范围内最多只能有一个定义类/模板可在多个编译单元定义但必须完全一致 违规示例 // file1.cpp int global_var 10; // 定义// file2.cpp int global_var 20; // 重复定义 → 链接错误正确实践 // header.h extern int global_var; // 声明非定义// file1.cpp int global_var 10; // 唯一定义// file2.cpp #include header.h void use_var() { std::cout global_var; } // 正确使用ODR 例外 内联函数/变量C17允许多处定义需完全相同模板实例化时生成唯一定义
http://www.hkea.cn/news/14486316/

相关文章:

  • 无锡网站建设运营做网站都要买服务器吗
  • 环球设计网站网站首页设计布局方式
  • 搭建网站大概多少钱企业只有建立了自己的网站
  • 可以做调查问卷的网站龙岗网站建设排名
  • 国内网站不备案可以吗wordpress 禁用admin
  • 网站开发环境集成安装包宁波网站设计服务收费价格
  • 做废旧哪个网站好徐州 网站 备案 哪个公司做的好
  • 网站风格定位怎么写网站推广方法素材
  • 海口seo网站推广遵义网站建设90kj
  • 网站模块顺序调整用layui做的一个网站模板
  • 个人主机做网站设计公司企业网站详情
  • 简繁英3合1企业网站生成管理系统做推广的网站带宽需要多少钱
  • 好的建筑设计网站wordpress里面的rss订阅
  • 有什么公司建网站如何建立小程序商城
  • 无锡手机网站建设报价wordpress寻模板
  • 永康网站开发郑州网站建设、
  • php源码项目门户网站开发智能建站实验报告
  • 云梦网站怎么做浮窗网站当电话线
  • wordpress游戏站北京商场人气排名
  • 不能上传图片到网站目前做网站最流行的程序语言
  • 哈尔滨网站建设哈尔滨网站标题用什么隔开
  • 档案网站建设书四川企业网站建设
  • 网站排名技巧保定网站建设公司大全
  • 广州科 外贸网站建设wordpress 4.7.8
  • 网站关键词建信建设投资有限公司网站
  • 介绍自己的做的网站吗android网站开发
  • 备案网站管理系统离线修改wordpress主题
  • 三大门户网站行业门户网站的优化怎么做yps行业门户系统
  • dw做汽车网站cms网站开发网站模板
  • 青海省建设厅官方网站青海西宁网站建设