91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux操作系統知識講解:避免內存使用七大坑

如意 ? 來源:Linux學習 ? 作者:佚名 ? 2020-08-28 11:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

內存使用那些坑

1、C 內存泄露

在類的構造函數和析構函數中沒有匹配地調用 new 和 delete 函數

Linux操作系統知識講解:避免內存使用七大坑

沒有正確地清除嵌套的對象指針

沒有將基類的析構函數定義為虛函數

當基類的指針指向子類對象時,如果基類的析構函數不是 virtual,那么子類的析構函數將不會被調用,子類的資源沒有得到正確釋放,因此造成內存泄露

缺少拷貝構造函數,按值傳遞會調用(拷貝)構造函數,引用傳遞不會調用

指向對象的指針數組不等同于對象數組,數組中存放的是指向對象的指針,不僅要釋放每個對象的空間,還要釋放每個指針的空間

缺少重載賦值運算符,也是逐個成員拷貝的方式復制對象,如果這個類的大小是可變的,那么結果就是造成內存泄露

2、C 野指針

指針變量沒有初始化

指針被 free 或 delete 后,沒有設置為 NULL

指針操作超越了變量的作用范圍,比如返回指向棧內存的指針就是野指針

訪問空指針(需要做空判斷)

sizeof 無法獲取數組的大小

試圖修改常量,如:char p=“1234”;p=‘1’;

3、C 資源訪問沖突

多線程共享變量沒有用 valotile 修飾

多線程訪問全局變量未加鎖

全局變量僅對單進程有效

多進程寫共享內存數據,未做同步處理

mmap 內存映射,多進程不安全

4、STL 迭代器失效

被刪除的迭代器失效

添加元素(insert/push_back 等)、刪除元素導致順序容器迭代器失效

錯誤示例:刪除當前迭代器,迭代器會失效

Linux操作系統知識講解:避免內存使用七大坑

正確示例:迭代器 erase 時,需保存下一個迭代器

Linux操作系統知識講解:避免內存使用七大坑

5、C++ 11 智能指針

auto_ptr 替換為 unique_ptr

Linux操作系統知識講解:避免內存使用七大坑

使用 make_shared 初始化一個 shared_ptr

Linux操作系統知識講解:避免內存使用七大坑

weak_ptr 智能指針助手(1)原理分析:

Linux操作系統知識講解:避免內存使用七大坑

(2)數據結構:

Linux操作系統知識講解:避免內存使用七大坑

(3)使用方法:a. lock() 獲取所管理的對象的強引用指針 b. expired() 檢測所管理的對象是否已經釋放 c. get() 訪問智能指針對象

6、C++ 11 更小更快更安全

std::atomic 原子數據類型 多線程安全

std::array 定長數組開銷比 array 小和 std::vector 不同的是 array 的長度是固定的,不能動態拓展

std::vector vector 瘦身 shrink_to_fit():將 capacity 減少為于 size() 相同的大小

td::forward_list

forward_list 是單鏈表(std::list 是雙鏈表),只需要順序遍歷的場合,forward_list 能更加節省內存,插入和刪除的性能高于 list

std::unordered_map、std::unordered_set用 hash 實現的無序的容器,插入、刪除和查找的時間復雜度都是 O(1),在不關注容器內元素順序的場合,使用 unordered 的容器能獲得更高的性能六、 如何查看內存

系統中內存使用情況:/proc/meminfo

進程的內存使用情況:/proc/28040/status

查詢內存總使用率:free

查詢進程 cpu 和內存使用占比:top

虛擬內存統計:vmstat

進程消耗內存占比和排序:ps aux –sort -rss

釋放系統內存緩存:/proc/sys/vm/drop_caches
責編AJX

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11522

    瀏覽量

    214118
  • 內存
    +關注

    關注

    8

    文章

    3128

    瀏覽量

    75352
  • C++
    C++
    +關注

    關注

    22

    文章

    2119

    瀏覽量

    75458
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    死創業者的硬件產品——“十大坑

    死創業者的硬件產品——“十大坑”第一:錯把產品原型當批量生產第二:以為可以修補bug;第三:什么都自己做;第四
    發表于 11-14 15:59

    Linux操作系統

    linux的教學內容1 、Linux概述 2 、Linux操作系統安裝3、 Linux的內核 4 、Li
    發表于 04-10 16:54 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>

    Linux操作系統原理及應用

    Linux操作系統原理及應用 1.1  操作系統的地位 1.2  操作系統的功能 1.3  操作系統的發
    發表于 04-28 14:53 ?0次下載

    什么是Linux操作系統

    什么是Linux操作系統  簡單地說,Linux是一套
    發表于 12-26 12:04 ?1441次閱讀

    Linux操作系統簡介

    領域縱橫馳騁吧! RT-Linux 這是由美國墨西哥理工學院開發的嵌入式Linux操作系統。到目前為止,RT-Linux已經成功地應用于航天飛機的空間數據采集、科學儀器測控和電影特技圖
    發表于 11-06 14:49 ?0次下載

    Linux操作系統基本使用知識Linux操作系統操作流程圖文詳解

    Linux系統一般有4個主要部分:內核、shell、文件系統和應用程序。內核、shell和文件系統一起形成了基本的操作系統結構,它們使得用戶
    發表于 11-24 16:19 ?1.9w次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>基本使用<b class='flag-5'>知識</b>,<b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b><b class='flag-5'>操作</b>流程圖文詳解

    Linux操作系統基礎教程的詳細資料講解

    并不能使同學們通過這次系列講座成為一個UNIX 類操作系統的高手,這次系列講座的目的就是在同學們中間普及Linux 基礎知識, 為今后我們更加接近的了解Linux 做一個好的開端。
    發表于 06-11 15:32 ?4次下載

    趣談Linux操作系統

    趣談Linux操作系統
    的頭像 發表于 01-13 16:00 ?6845次閱讀

    linux操作系統好學嗎_要學什么

    linux操作系統的基礎知識是比較好學的,但是需要我們通過大量地練習來牢記這些基礎知識
    發表于 05-23 09:33 ?3225次閱讀

    Linux操作系統知識講解:走進內存

    Linux操作系統知識講解:走進內存
    的頭像 發表于 08-28 10:30 ?2673次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b><b class='flag-5'>知識</b><b class='flag-5'>講解</b>:走進<b class='flag-5'>內存</b>

    Linux操作系統知識講解:走進linux 內存地址空間

    Linux操作系統知識講解:走進linux 內存地址空間
    的頭像 發表于 08-28 10:45 ?5452次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b><b class='flag-5'>知識</b><b class='flag-5'>講解</b>:走進<b class='flag-5'>linux</b> <b class='flag-5'>內存</b>地址空間

    Linux操作系統知識講解:走進Linux 內存分配算法

    Linux操作系統知識講解:走進Linux 內存分配算法
    的頭像 發表于 08-28 10:57 ?5787次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b><b class='flag-5'>知識</b><b class='flag-5'>講解</b>:走進<b class='flag-5'>Linux</b> <b class='flag-5'>內存</b>分配算法

    Linux操作系統知識講解:走進Linux 內存使用場景

    Linux操作系統知識講解:走進Linux 內存使用場景
    的頭像 發表于 08-28 11:04 ?3234次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b><b class='flag-5'>知識</b><b class='flag-5'>講解</b>:走進<b class='flag-5'>Linux</b> <b class='flag-5'>內存</b>使用場景

    linux操作系統基礎知識

    本文主要闡述了linux操作系統基礎知識
    發表于 06-04 15:07 ?6048次閱讀

    物聯網WIFI模塊AT指令版本七大坑

    物聯網WIFI模塊AT指令版本七大坑,看年你踩中幾個!
    的頭像 發表于 08-28 16:29 ?1591次閱讀
    主站蜘蛛池模板: 草伊人 | 婷婷激情小说网 | 日本大片免费观看视频 | 国产成人优优影院 | 国产黄色一级网站 | 不卡一区二区在线观看 | 午夜视频免费观看黄 | 99久久国产免费中文无字幕 | 亚洲第一区精品日韩在线播放 | 久久五月天婷婷 | 夜夜骑狠狠干 | 狼狼色丁香久久女婷婷综合 | 中国一级特黄剌激爽毛片 | 欧美亚洲一区二区三区在线 | 四虎在线免费播放 | 狠狠干天天爽 | www.黄视频| 高h 男男 | 日本级毛片免费观看 | 日产精品卡二卡三卡四卡乱码视频 | 99热99热 | 成年人色网站 | 视频在线h| 久久综合九色综合97婷婷群聊 | 国产aaaaa一级毛片 | 日本人六九视频69jzz免费 | 四虎永久精品免费观看 | 真人午夜a一级毛片 | 99久久久精品免费观看国产 | 午夜精品福利影院 | 国产精品嫩草影院人体模特 | ts 人妖 另类 在线 | 亚洲资源在线观看 | 最新版天堂资源8网 | 最新国产在线播放 | 熊出没之环球大冒险旧版免费观看 | se97se成人亚洲网站 | 国产一级一级片 | 四虎在线观看 | 国产精品免费看久久久香蕉 | 奇米色88欧美一区二区 |