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

做58同城这样的网站有哪些互联网保险下架

做58同城这样的网站有哪些,互联网保险下架,单页企业官网模板,php网站怎么做一、new和delete操作自定义类型 new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数#xff08;new会自动调用构造函数#xff1b;delete会调用析构函数#xff09; class A { public:A(int a 0): _a(a){cout new会自动调用构造函数delete会调用析构函数 class A { public:A(int a 0): _a(a){cout A(): this endl;}~A(){cout ~A(): this endl;} private:int _a; }; int main() {// new/delete 和 malloc/free最大区别是 // new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数A* p1 (A*)malloc(sizeof(A));A* p2 new A(1);free(p1);delete p2;return 0; } 通过调试可以发现new可以将值初始化为1 如果是多个对象 A* p5 (A*)malloc(sizeof(A)*10); A* p6 new A[10]; free(p5); delete[] p6; 每个元素都会调用一次构造函数和析构函数 此时数组会调用默认构造函数将每个元素初始化为0 如果没有默认构造函数那么此时需要我们自己向构造函数传递数值 分析下面的代码 #define _CRT_SECURE_NO_WARNINGS #includeiostream using namespace std; class A { public:~A(){cout ~A(): this endl;} private:int _a; }; int main() {A* p5 (A*)malloc(sizeof(A) * 10);A* p6 new A[10];free(p5);delete[] p6;return 0; } 上面类中只有系统提供的默认的构造函数new初始化对象的时候调用系统提供的默认构造函数但是这个默认构造是跟malloc一样将数组中的元素初始化为随机值 如果构造函数不是默认构造函数 class A { public:A(int a): _a(a){cout A(): this endl;}~A(){cout ~A(): this endl;} private:int _a; }; int main() {A* p5 (A*)malloc(sizeof(A) * 10);A* p6 new A[4]{1,2,3,4};A* p7 new A[4]{ A(1),A(2),A(3),A(4) };free(p5);delete[] p6;return 0; } 这里相当于隐式类型转换1234类型为A1会调用构造函数作为参数传递变为A类型 等价于下面A* p7两者是等价的A(1)A(2)A(3)A(4)是匿名对象 如果A有默认构造那么可以采用注释的方式前三个根据提供的值进行初始化最后一个根据默认构造进行初始化如果A没有默认构造那么必须提供准确的值进行初始化每个元素都需要提供 如果new对象再freemalloc再delete出产生什么结果 对于内置类型一般不会出现大问题 但是对于自定义类型 直接会引发程序崩溃 原则一定包匹配使用否则可能会出现大问题结果是不确定的 二、operator new与operator delete函数  operator new与operator delete不是一个运算符重载而是一个全局函数库里面的 free是一个宏函数底层调用_free_dbg; malloc如果失败会返回空但是面向对象语言处理失败不喜欢用返回值更建议用抛异常 直到返回空然后程序结束  32位的进程空间总共的寄存器大小为4G会有4G的虚拟内存 / 堆的总大小不会超过2G 使用new申请过于大的空间会直接报异常 可以使用下面的形式捕获异常catch会捕捉失败的地方具体语法后面讲 报异常后会将之前开辟的内存直接释放 因此虽然new的功能是开空间 构造函数开空间部分如果直接调用malloc那么开辟失败会返回空指针不会报异常C希望的是报异常 因此引入operator new实际上是对malloc的封装如果失败了会报异常 因此实际上new开空间的功能是调用operator new而operator new实际上是调用malloc delete释放空间的功能实际上是调用operator delete函数而operator delete函数底层是通过封装free函数来实现的 通过观察可以发现new实际上就是调用operator new和构造函数先开空间再调用构造函数 同理delete实际上就是调用operator delete和析构函数先调用析构函数清理资源再释放空间 三、定位new表达式(placement-new) 分析下面场景如果我们需要申请一个堆上的栈对象 调用new的时候首先创建的指针变量位于栈区然后调用operator new在堆上创建对应的成员变量空间然后会调用构造函数在堆区创建数组空间堆上的_array指向arr 同理这个过程中会先调用析构函数清理stack对象指向的资源arr析构函数释放由于构造函数开辟的资源operator delete调用free将开辟的成员变量释放 科普定位new的用途 如果需要频繁的申请和释放内存直接在堆上找到合适的空间是一个比较麻烦的事那么我们可以构造内存池每次从这个池子中去申请直接在内存池中申请会比直接在堆上申请快一点 new是直接在堆上找到合适的内存进行初始化而我们在内存池中找到的空间没办法进行初始化 这时候我们可以采用定位new进行初始化 STL中的链表源码实际上就用到了定位new 这里的construct就是调用定位newdestory就是显示调用析构函数并且代码量少的函数直接设置为内联 总结 定位new表达式是在已分配的原始内存空间中调用构造函数初始化一个对象。 使用格式 new (place_address) type或者new (place_address) type(initializer-list)place_address必须是一个指针initializer-list是类型的初始化列表 使用场景        定位new表达式在实际中一般是配合内存池使用。因为内存池分配出的内存没有初始化所以如果是自定义类型的对象需要使用new的定义表达式进行显示调构造函数进行初始化。 四、内存泄漏 cout打印int*是按照指针类型进行打印的但是cout打印char*会将其识别为一个字符串 对于上面的代码申请1G的内存打印的p1会是乱码 cout将char*识别为一个字符串打印字符串遇到 \0 才停止但是上面申请的内存没有进行初始化因此会一直找 \0 且没有初始化的空间为随机值。 因此我们将其初始化就不会遇到上面的错误 如果我们想要按照地址打印char*类型怎么办 方法一使用printf进行打印%p; 方法二使用cout将其转化为(void*)进行打印 进程结束的时候操作系统会自动的将进程给回收了 因此平时我们运行的时候就算不手动释放操作系统会帮我们自动释放 总结 普通程序内存泄漏影响不大进程正常结束会释放资源长期运行的程序服务器内存泄漏危害很大例如 --- 游戏服务电商服务...... 什么是内存泄漏内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失而是应用程序分配某段内存后因为设计错误失去了对该段内存的控制因而造成了内存的浪费。         内存泄漏的危害长期运行的程序出现内存泄漏影响很大如操作系统、后台服务等等出现内存泄漏会导致响应越来越慢最终卡死。 五、模板引入 模板分为函数模板 类模板 引入关键字template模板typename可以缩写为T其中T被称为模板参数 函数模板 模板参数定义的是类型 templatetypename T void Swap(T left, T right) {T tmp left;left right;rifht tmp; }int main() {int a 0, b 1;double c 1.1, d 2.2;Swap(a, b);Swap(c, d);return 0; } 问题对于上面的代码两次调用的Swap是否是同一个函数 答案不是同一个函数 根据汇编代码可以分析调用的不是同一个函数调用根据模板生成的具体的函数这个过程也叫做模板的实例化 编译器根据函数模板生成对应具体的函数 注意点C内置自己提供了swap函数不需要我们自己实现 底部也是根据模板实现的 这里的swap可以交换内置类型和自定义类型
http://www.w-s-a.com/news/444840/

相关文章:

  • 龙岩做网站的顺企网宁波网站建设
  • 昆山网站建设河北连锁餐厅vi设计公司
  • 新蔡县住房和城乡建设局网站南昌租房网地宝网
  • 南宁做网站费用iis编辑网站绑定
  • 家用宽带做网站服务器建网站费用明细
  • 电商 网站 降低 跳出率 措施 效果书画院网站模板
  • 兰州移动官网网站建设上海工商网上公示系统
  • 在招聘网站里做电话销售免费空间可以上传网站吗
  • 梅州建站怎么做中国建设银行官网下载
  • 网站静态化设计广州网站备案方案
  • 西安网络技术有限公司网站扬中网站建设方案
  • 青海省教育厅门户网站wordpress core
  • idc科技公司网站模板蜜雪冰城网络营销案例分析
  • 微信与网站对接手机软件怎么做
  • 户县网站建设珠海专业制作网站
  • 麦当劳的网站优化建议猎头公司工作怎么样
  • 合肥地区网站制作网页浏览器打不开
  • 做网站的不给ftp网站如何做触屏滑动
  • wordpress statraq重庆百度优化
  • 企业网站官网英文WordPress站点切换为中文
  • 服装公司网站定位一点号自媒体平台
  • 密云微网站建设汽车之家手机官网首页
  • 多语言外贸网站制作苏州建设网站微信公众号
  • 用wordpress建站学什么百度给企业做网站吗
  • 福建城乡建设网站做数码测评的网站
  • 东海县建设局网站wordpress 好用的主题
  • 网站图片设计制作制作一个门户网站需要多少钱
  • 虚拟币交易网站源码自己给网站做支付接口
  • 免费的seo网站在线 crm
  • 绍兴市高速公路建设指挥部网站网站主页和子页风格如何统一