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

二级域名建站app在线设计

二级域名建站,app在线设计,做网站需不需要营业执照,门户网站建设不断当结构体中包含 std::string 等标准库对象时,不建议使用 memset 和 memcpy来对结构体进行赋值 : 强调构造/析构函数 memset 和 memcpy 直接操作内存,会绕过对象的构造函数和析构函数。对于 std::string 这样的非平凡(non-trivial&…

当结构体中包含 std::string 等标准库对象时,不建议使用 memsetmemcpy来对结构体进行赋值 :

  1. 强调构造/析构函数
    memsetmemcpy 直接操作内存,会绕过对象的构造函数和析构函数。对于 std::string 这样的非平凡(non-trivial)类型:

    • 使用 memset 清零对象时,未调用构造函数,对象可能未正确初始化。
    • 使用 memcpy 复制对象后,析构时可能多次释放同一内存(浅拷贝导致重复析构)。
  2. 未定义行为的具体表现
    在错误示例中:

    • memset(&user1, 0, sizeof(User)):将 user1.name 的内部指针置为 nullptr,后续调用析构函数时可能触发 delete nullptr(安全),但若 memset 填充非零值,可能引发非法内存释放。
    • memcpy(&user1, &user2, sizeof(User)):复制后 user1.nameuser2.name 指向同一内存。当二者析构时,同一内存会被释放两次(双重释放,导致崩溃)。
  3. 标准库容器的通用性
    规则不仅适用于 std::string,也适用于其他管理资源的类型(如 std::vectorstd::map)。例如:

    struct Data {std::vector<int> values;
    };
    Data a;
    a.values.push_back(42);
    Data b;
    memcpy(&b, &a, sizeof(Data)); // 危险:b.values 的指针与 a.values 相同
    
  4. C++对象的“生命周期”管理
    C++ 依赖于构造函数和析构函数管理资源。手动内存操作(如 memset/memcpy)会破坏 RAII(资源获取即初始化)原则,导致资源泄漏或非法操作。

  5. 例外情况
    若结构体仅包含平凡类型(POD,如 intfloat、原始数组等),可使用 memsetmemcpy。例如:

    struct Point {int x, y;
    };
    Point p1{1, 2};
    Point p2;
    memcpy(&p2, &p1, sizeof(Point)); // 安全:Point 是平凡类型
    

演示代码

#include <iostream>
#include <string>
#include <vector>// 定义包含 std::string 的结构体
struct User {std::string name;int age;
};// 错误示范:使用 memset 和 memcpy(危险!)
void wrongExample() {User user1;// 错误:memset 会破坏 std::string 的内部状态memset(&user1, 0, sizeof(User));User user2;user2.name = "Alice";user2.age = 30;// 错误:memcpy 仅浅拷贝指针,导致 user1.name 成为悬垂指针memcpy(&user1, &user2, sizeof(User));// 访问 user1.name 会导致未定义行为(崩溃或乱码)std::cout << "Wrong Example: " << user1.name << std::endl;
}
// 正确示范:依赖默认构造和赋值操作
void correctExample() {User user1; // 自动调用默认构造函数,name 初始化为空字符串user1.age = 25;User user2;user2.name = "Bob";user2.age = 30;// 正确:使用赋值操作符进行深拷贝user1 = user2;// 安全访问,输出 "Bob"std::cout << "Correct Example: " << user1.name << std::endl;
}int main() {std::cout << "演示错误做法:" << std::endl;wrongExample(); // 可能触发未定义行为(如崩溃)std::cout << "\n演示正确做法:" << std::endl;correctExample(); // 正常输出 "Bob"return 0;
}

文章转载自:

http://nyvnuG35.wgzzj.cn
http://QiDc0ei4.wgzzj.cn
http://GqocaV8N.wgzzj.cn
http://EVB3lXDJ.wgzzj.cn
http://IdsQ5FL5.wgzzj.cn
http://4d6WiBnt.wgzzj.cn
http://4iEQrWD8.wgzzj.cn
http://pVRK52QH.wgzzj.cn
http://QcwgQ5Oi.wgzzj.cn
http://bR4rfZIC.wgzzj.cn
http://OgfYjgou.wgzzj.cn
http://FX9krKS1.wgzzj.cn
http://1oOLWfq4.wgzzj.cn
http://ibmUof0D.wgzzj.cn
http://26FBjNlk.wgzzj.cn
http://WvuD2fJW.wgzzj.cn
http://473tFV4U.wgzzj.cn
http://c4dgkLuX.wgzzj.cn
http://connmbDB.wgzzj.cn
http://rPQgWFrs.wgzzj.cn
http://2vG3qzGA.wgzzj.cn
http://5urBlnfW.wgzzj.cn
http://VO7Hd4x1.wgzzj.cn
http://AsaXxDWP.wgzzj.cn
http://gUyv6XuA.wgzzj.cn
http://LHGwRhiS.wgzzj.cn
http://vgYFs8Wm.wgzzj.cn
http://wfkS3r09.wgzzj.cn
http://YskaL1rM.wgzzj.cn
http://aL6cbJQD.wgzzj.cn
http://www.dtcms.com/wzjs/743291.html

相关文章:

  • 天津工程建设协会网站直播网站app开发
  • 江西建设厅培训网站wap 2.0的网站
  • 烟台做网站系统中国十大培训机构影视后期
  • 丽水手机网站建设小网站开发用哪些技术
  • 墨刀做网站上下滑动的交互濮阳网站建设在哪里
  • 中国网站排名网网站建设的费用结构
  • 网站设计前景怎样邢台市官网
  • wordpress设计类网站怎么创建自己公司的网站
  • 民宿网站开发方案垂直网站建设的关键因素
  • 网站建设 备案什么意思备案关闭网站
  • 徐州网站建设优化宣传网站运营的含义是什么
  • 织梦技术个人网站模板sae wordpress 主题
  • gps建站教程视频安卓wordpress
  • wordpress零基础建站教程最专业的网站建设收费
  • 视频直播免费网站建设网页论坛
  • 网站开发项目质量控制措施零基础怎么学网页设计
  • 苏州企业网站设计开发wordpress防止ddos插件
  • 做公司网站的专业公司深圳wordpress E405
  • 人才招聘网站开发 源代码自己创业做原公司一样的网站
  • 旅游网站前端模板建设工程有限公司网站
  • 河北提供网站制作公司哪家专业什么软件可以推广自己的产品
  • 建设工程案例网站go cms wordpress
  • 高清素材图片的网站电子商城网站开发
  • 园区门户网站建设wordpress网站模板下载
  • 便宜的seo网站优化排名广告公司怎么做业务
  • 有谁做过网站建设邯郸网站推广
  • 山东正元建设网站vs做网站案例
  • 网站建设与推广王钊互联网小白怎么入门
  • 网站制作能赚多少钱wordpress默认主题哪个好
  • 网站做预览文档网站建设商标在哪个类别