C++ 复习笔记 (之二)

(7)size_t:
size_t 虽然在标准C中定义,但实际使用中一直是一个不太容易灵活应用的内容。
size_t类型是一个类型定义,通常将一些无符号的整形定义为size_t,比如说unsigned int或者unsigned long,甚至unsigned long long。

参看这篇文章:
why size_t matters

一般提到size_t 都说提高代码的可移植性, 有效性和可读性,(主要是可移植性)

在大部分机器上,unsigned int的最大值要比int的最大值大两倍,比如说再也给16位的机器上,unsigned int的最大值为65535,int的最大值为32767。
int在大部分机器上可以移行,但例如在摩托罗拉IP16L32平台上并非如此,(详细省略)
size_t类型是一个类型定义,通常将一些无符号的整形定义为size_t,比如说unsigned int或者unsigned long,甚至unsigned long long。
常用例子:

void *memcpy(void *s1, void const *s2, size_t n);
size_t strlen(char const *s);
void *malloc(size_t n);

size_t的定义在<stddef.h>, <stdio.h>, <stdlib.h>, <string.h>, <time.h>和<wchar.h>这些标准C头文件中,

(8)智能指针:

为何需要智能指针?
内存管理是常见错误和Bug来源,很多BUG来自动态内存分配和指针的使用。
广泛使用动态内存分配(使用容器等)后,很容易忘记每个指针只在正确时间执行一次delete 操作。出错的后果是多次释放动态分配的内存时,有可能会导致内存损坏或者致命的运行时错误,而当忘记释放动态内存分配,则会导致内存泄漏。
智能指针可以帮助管理动态内存的分配,避免内存泄漏。

auto_ptr: 废妃

unique_ptr:
🌰

void notLeaky()
{
      auto mySimpleSmartPtr = make_unique<Simple>();
      mySimpleSmartPtr->go();
}

如果编译器不支持make_unique(),则采用:
🌰

unique_ptr<Simple> mySimpleSmartPtr(new Simple());

shared_ptr:
用make_shared()创建🌰

auto mySimpleSmartPtr = make_shared<Simple>();

带有自动释放功能

int main()
{
    shared_ptr<int> myIntSmartPtr(malloc_int(42),free);
    return 0;
}

一个用于文件操作的🌰

void CloseFile(FILE* filePtr)
{
    if (filePtr == nullptr)
          return;
    fclose(filePtr);
    cout << "closed" << endl;
}
int main()
{
    FILE* f = fopen("data.txt", "w");
     shared_ptr<FILE> filePTr(f, CloseFile);
    // 以下省略
    //......
    return 0;
}

其他还有weak_ptr, Nothing 引用计数

**实用上讲,shared_ptr 对于指针的释放操作比较方便.

(9)常见内存陷阱:
-分配不足的字符串
-访问内存越界
-内存泄漏
-双重删除、无效指针
**内存另外开辟专题文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,093评论 6 13
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,166评论 1 51
  • C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是...
    一生信仰阅读 4,987评论 0 2
  • 骆凡说今晚要请她吃饭,算是上次她请他吃饭的回礼。 易向晚一下班就一溜烟的跑到指定地点等骆凡,她特意...
    妖鲇阅读 2,507评论 0 0
  • 我是个女生,今年21岁, 我是个话唠,喜欢说话,因为觉得孤独寂寞, ...
    74668e119e1f阅读 1,598评论 0 0

友情链接更多精彩内容