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

外包建站公司做网站卖钱

外包建站公司,做网站卖钱,怎样查后缀vc域名网站,wordpress 文章与页面前言#xff1a;在C语言中#xff0c;有malloc#xff0c;realloc#xff0c;calloc开辟动态内存空间#xff0c;free销毁动态内存空间。而在C中#xff0c;使用new开辟动态内存空间#xff0c;delete销毁动态内存空间。不仅简化了操作#xff0c;更为重要的是#xf…前言在C语言中有mallocrealloccalloc开辟动态内存空间free销毁动态内存空间。而在C中使用new开辟动态内存空间delete销毁动态内存空间。不仅简化了操作更为重要的是解决自定义类型的初始化问题。 目录 一.简化操作二.解决自定义类型初始化问题重点三.new不检查失败抛异常1.抛异常2.捕获异常try catch 四.operator new/operator delete函数1.内置类型2.自定义类型 一.简化操作 用法new 类型 delete 指针 创建数组new 类型[数据个数] delete[] 指针 编译器会自动计算类型大小并且不用再强制转换类型。大大简化了操作但是要记住下面这三句话一定要匹配使用匹配使用匹配使用 //int* a (int*)malloc(sizeof(int));//free(a);int* a new int;delete a;int* b new int[10];delete[] a;二.解决自定义类型初始化问题重点 new/delete 和malloc/free最大的区别就是new/delete对于自定义类型除了开空间以外会去调用它们的构造函数/析构函数。 new会调用构造函数delete会调用析构函数。 以栈类为例 typedef int DataType; class Stack { public:Stack(int capacity 4)//构造函数 {_arr new DataType[capacity];_capacity capacity;_size 0;}void StackPush(DataType Data){_arr[_size] Data;_size;}~Stack() //析构函数{delete[] _arr;_capacity _size 0;} private:DataType* _arr;int _capacity;int _size; }; int main() {Stack* ptr (Stack*)malloc(sizeof(Stack)); //malloc开辟一个自定义的栈对象ptr-StackPush(1); //压栈free(ptr);return 0; }控制台显示如下我们知道不为0代表着程序出错那上面代码为什么出错呢这就是我们强调的malloc只是单纯的开辟空间不会去调用自定义类型Stack的构造函数也就没有初始化没有初始化还向里面压栈肯定会出现错误的。 改成new和delete则不会报错 int main() {Stack* ptr new Stack;ptr-StackPush(1);delete ptr;//free(ptr) 不行free不会去调用析构函数资源得不到清理。return 0; }三.new不检查失败抛异常 我们用malloc开辟空间时一般都会写一个if条件语句防止开辟空间失败而new不再检查失败出错时会直接抛异常也就是说用new的话不需要再写if条件防止开辟空间失败。 void Func() {//mallocint* a (int*)malloc(sizeof(int)*10);if (a nullptr) //if判断{return;}free(a);//newint* b new int[10];delete[] b; }1.抛异常 用malloc开辟同样大小的空间并不会提示错误而new会。 2.捕获异常try catch 利用try和catch捕获异常找到出现异常的原因。 int main() {try{char* p2 new char[0x7fffffff];}catch (const exception error){cout error.what() endl;} 控制台显示如下 出现异常后会发生执行流跳跃不执行异常后的代码 int main() {try{cout 正常 endl;char* p2 new char[0x7fffffff];cout 异常 endl;}catch (const exception error){cout error.what() endl;}return 0; }控制台输出如下可以看到输出“异常”的代码并没有被执行。这点类似goto语句出现异常之后就直接跳到catch语句。这样的设计避免了出错了还运行后面的语句防止错上加错。 四.operator new/operator delete函数 new和delete是用户进行动态内存申请和释放的操作符operator new和operator delete是系统提供的全局函数new在地城调用operator new全局函数来申请空间delete在底层通过operator delete全局函数来释放空间。 operator new是malloc函数的封装也就是说new出来的空间实际上是malloc出来的。不同的是malloc函数出现错误会返回NULL而C需要的是出现错误返回异常因此封装malloc函数但出现错误返回异常。 operator delete原理与operator类似。 如下operator new/operator delete使用方法与malloc/free相同。 int* a (int*)malloc(sizeof(int) * 10);free(a);int* b (int*)operator new(sizeof(int) * 10);operator delete(b);1.内置类型 由上如果申请的是内置类型的空间new和mallocdelete和free基本类似。不同的是new/delete申请和释放的是单个元素的空间new[]和delete[]申请和释放的是连续空间而且new在申请空间失败时会抛异常malloc会返回NULL。 以下三种方式都可以释放空间实际上都是使用free释放空间。但是第一第二种并不推荐。使用时一定要匹配使用。以避免特殊情况出现。 int* a new int[10];//都可以释放申请的空间//free(a);//delete a;delete[] a;2.自定义类型 new的原理 1.调用operator new函数申请空间 2.在申请的空间上执行构造函数完成对象初始化。delete的原理 1.在空间上执行析构函数完成对象中资源的清理工作。 2.调用operator delete函数释放对象的空间。new T[n]的原理 1.调用operator new[]函数在operator new[]中实际调用operator new函数完成n个对象空间的申请。 2.在申请的空间上执行n次构造函数。delete[]的原理 1.在释放的对象空间上执行n次析构函数完成n个对象中资源的清理工作。 2.调用operator delete[]释放空间实际在operator delete[]中调用operator delete来释放空间。 文末BB对哪里有问题的朋友尽管在评论区留言若哪里写的有问题也欢迎朋友们在评论区指出博主看到后会第一时间确定修改。最后制作不易如果对朋友们有帮助的话,希望能给博主点点赞和关注.
http://www.zqtcl.cn/news/879417/

相关文章:

  • 音乐网站如何建设的如何做学校网站
  • 济南比较好的网站开发公司个人注册网站怎么注册
  • 济南高端网站设计策划图书馆网站建设情况汇报
  • 知识付费网站建设做网站源码
  • php网站开发实训报告书怎么做兼职类网站吗
  • 建设银行u盾用网站打不开中企动力值不值得入职
  • 织梦做的网站有点慢商贸网站
  • 海外红酒网站建设wordpress 分类 文章
  • 七星彩网站建设wordpress w3
  • 广州网站建设全包百度怎么优化关键词排名
  • 中山网站制作服务公司做环评的网站
  • 江山市住房和城乡建设局网站iis部署网站 错误400
  • 网站域名如何备案建设厅公积金中心网站
  • 网站怎么建设?电子商务网站开发相关技术
  • 苏州网站设计公司济南兴田德润厉害吗python基础教程第3版
  • 网站多久备案一次电子商务平台信息系统建设
  • 网站开发方面的文献自己怎么建个免费网站吗
  • 建设网站前的市场分析百度竞价推广是什么
  • 专门做照片书的网站阳谷聊城网站优化
  • 国际贸易相关网站网站建设的目标与思路
  • 小型网站建设费用云南网站建设企业推荐
  • 设备租赁业务网站如何做看板娘 wordpress
  • 上海网站设计工作室二手交易网站建设目标
  • 深圳智能响应网站建设平面设计基础教程
  • 网站建设 推广全流程案例分析网站
  • 企业建网站多少钱怎样做网站挣钱
  • 经营性质的网站asp.ne做网站
  • 天津都有哪些制作网站开网站挣不挣钱
  • 网站建设云技术公司推荐重庆网页设计培训
  • 做房产网站不备案可以吗北京爱空间装修公司