`
kmplayer
  • 浏览: 517763 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

条款5:使用相同形式的new和delete

 
阅读更多
1,delete的最大问题在于:即将被删除的内存究竟存有多少个对象?它决定有多少个destructor必须被调用.
2,delete删除单个对象;
delete[]删除的对象是个数组.
#include <iostream>
using namespace std;

int main()
{
    string* string1=new string;
    string* string2=new string[100];
    delete string1;//删除一个对象
    delete[] string2;//删除整个对象数组
    //delete[]string1; 结果未定义
    //delete string2;  结果未定义
    return 0;
}

3,最好不要对数组型别作typedef.
如:typedef string Address[4];
此时Address a;相当于 string a[4];
分享到:
评论

相关推荐

    Effective.C++.中文第二版.50条款doc文档.chm

    条款5:对应的new和delete要采用相同的形式 条款6:析构函数里对指针成员调用delete 条款7:预先准备好内存不够的情况 条款8: 写operator new和operator delete时要遵循常规 条款9: 避免隐藏标准形式的new 条款10: ...

    Effective C++(第三版)

    条款16:成对使用new和delete时要采取相同形式 use the same form in corresponding uses of new and delete. 条款17:以独立语句将newed对象置入智能指针 store newed objects in smart pointers in standalone ...

    高效C++:从C到C++

    **条款5:对应的new和delete要采用相同的形式** - **背景**:在C++中,`new`和`delete`有不同的形式:`new`和`delete[]`用于数组,而单独的`new`和`delete`用于单个对象。 - **原因**:使用不匹配的`new`和`delete`...

    EffectiveC++终稿44__tagged_2019-06241

    **条款 16:成对使用 new 和 delete 时要采取相同形式** 动态分配内存时,使用`new`和`delete`必须匹配,即动态数组使用`new[]`和`delete[]`,单个对象使用`new`和`delete`。 **条款 17:以独立语句将 newed 对象...

    Effective_C++

    **条款5:对应的new和delete要采用相同的形式** - **目的**: 避免内存泄漏和非法操作。 - **解释**: 如果使用`new`分配了内存,则必须使用`delete`来释放内存;同样,如果使用了`new[]`分配数组,则必须使用`delete...

    effective+C++.doc

    5. **对应的new和delete要采用相同的形式**:使用带或不带大小的`new`和`delete`必须匹配,否则可能导致内存泄漏。 6. **析构函数里对指针成员调用delete**:析构函数是清理资源的合适场所,确保对动态分配的内存...

    浅度解析C++运算符重载

    :, new, delete, [], -&gt;*。 3. 正确的方法 正确地重载运算符需要注意以下几点: (1) 一元操作符: - 一元操作符如++和--需要特别注意其前缀和后缀形式。前缀操作符通常会改变对象状态,因此通常返回非const的*...

    Effective C++

    5. **自定义operator new和operator delete**: 当需要特殊内存分配策略时,可以重载`new`和`delete`操作符。然而,这样做需要遵循一定的规则,比如确保与标准版本的行为一致,且通常应该提供匹配的数组版本。 6. ...

    Effective C++中文版(word)

    5. **对应的 new 和 delete 要采用相同的形式** 当自定义`operator new`和`operator delete`时,应确保它们成对出现,并且处理异常一致,以保证内存管理的完整性。 6. **析构函数里对指针成员调用 delete** ...

    Effective C++学习笔记

    16. **成对使用new和delete时要采用相同形式**:动态分配数组时,使用`new[]`和`delete[]`配对,以避免内存泄漏。 17. **以独立语句将newed对象置入只能指针**:这样做可以确保即使在构造智能指针时发生异常,也能...

    侯捷译Scott Meyers的 More Effecitve C++

    - **Item 5: 谨慎定义类型转换函数** - 类型转换函数(如operator int)应当谨慎定义,以避免潜在的类型混淆或错误。 - **Item 6: 自增(INCREMENT)、自减(DECREMENT)操作符前缀形式与后缀形式的区别** - **前缀...

    计算机专业英语词汇.pdf

    计算机专业英语词汇涉及大量与计算机科学和信息技术相关的专业术语。这些词汇是计算机专业人士在阅读技术文档、编程、系统管理等场合中不可或缺的语言元素。词汇表中包含动词、名词、形容词和介词等,涵盖了计算机...

    McGraw Hill - C++-The_Complete_Reference

    - **动态内存分配**:介绍了new和delete运算符的使用,以及智能指针等现代C++中的内存管理工具。 7. **高级主题**:最后一部分涵盖了更复杂的主题,如多线程编程和C++11/14/17等新标准的特性。 - **多线程编程**...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    4.3.2 new和delete操作符 168 4.3.3 为数组动态分配内存 169 4.3.4 多维数组的动态分配 171 4.4 使用引用 172 4.4.1 引用的概念 172 4.4.2 声明并初始化lvalue引用 172 4.4.3 声明并初始化rvalue引用 173 ...

    PT80-NEAT开发指南v1.1

    版权和许可条款 ...................................................................................................................................... 1 第二章 PT80 开发入门 ..............................

Global site tag (gtag.js) - Google Analytics