1. 程式人生 > >what, when, why, how...

what, when, why, how...

* glibc detected * free(): invalid pointer:
* glibc detected * malloc(): memory corruption:
* glibc detected double free or corruption (out): 0x00000000005c18a0 **
* glibc detected double free or corruption (!prev): 0x0000000000a01f40 **
* glibc detected corrupted double-linked list: 0x00000000005ab150 **

你是否遇到過這樣的情況,太沮喪了,程式總是無端coredump,gdb到core檔案裡面也看不出個所以然來,這對於一個大型的商業系統來說太令人恐怖了,事故隨時可能發生。

遇到棘手的問題,慌張是沒用的,解決不了任何問題。先坐下來,喝杯茶,舒緩一下神經。

記憶體問題始終是c++程式設計師需要去面對的問題,這也是c++語言的門檻較高的原因之一。通常我們會犯的記憶體問題大概有以下幾種:

1.記憶體重複釋放,出現double free時,通常是由於這種情況所致。
2.記憶體洩露,分配的記憶體忘了釋放。
3.記憶體越界使用,使用了不該使用的記憶體。
4.使用了無效指標。
5.空指標,對一個空指標進行操作。

對於第一種和第二種,第五種情況,就不用多說,會產生什麼後果大家應該都很清楚。

第四種情況,通常是指操作已釋放的物件,如:
1.已釋放物件,卻再次操作該指標所指物件。
2.多執行緒中某一動態分配的物件同時被兩個執行緒使用,一個執行緒釋放了該物件,而另一執行緒繼續對該物件進行操作。

我們重點探討第三種情況,相對於另幾種情況,這可以稱得上是疑難雜症了(第四種情況也可以理解成記憶體越界使用)。

記憶體越界使用,這樣的錯誤引起的問題存在極大的不確定性,有時大,有時小,有時可能不會對程式的執行產生影響,正是這種不易重現的錯誤,才是最致命的,一旦出錯破壞性極大。

什麼原因會造成記憶體越界使用呢?有以下幾種情況,可供參考:
例1:
char buf[32] = {0};
for(int i=0; i

相關推薦

what, when, why, how...

* glibc detected * free(): invalid pointer: * glibc detected * malloc(): memory corruption: * glibc detected double free or corr

反射是什麽,what why how

python反射也叫內省,就是讓對象自己告訴我們它都有什麽方法 https://docs.python.org/3/library/functions.html?hight=hasattr#hasattr 1.hasattr(obj, attr): 這個方法用於檢查obj(對象)是否有一個名為attr的值的屬

Spark---What---Why---How!!!!!!!!

轉發:http://blog.csdn.net/bolu1234/article/details/51867099 Spark:大資料的電花火石! 2014年06月13日 23:19:10 anzhsoft 閱讀數:28516更多 個人分類: 架構探索Spa

Streaming System 第二章:The What- Where- When- and How of Data Processing

本文由《Streaming System》一書第二章的提煉翻譯而來,譯者才疏學淺,如有錯誤,歡迎指正。轉載請註明出處,侵權必究。 本章主要介紹魯棒的處理亂序資料的核心概念,這些概念的運用使流處理系統超越批處理系統的關鍵所在。 路線圖 上一章中,我們介紹了兩個非常關鍵的概念: 事件時間和處理時間,

006、容器 WhatWhyHow(2018-12-21 週五)

參考 https://www.cnblogs.com/CloudMan6/p/6751516.html   What - 什麼是容器?       容器是一種輕量級、可移植、自包含的軟體打包技術,是應用程式可以在幾乎任何地

容器 What, Why, How

What - 什麼是容器? 容器:   容器是一種輕量級、可移植、自包含的軟體打包技術,使應用程式可以在幾乎任何地方以相同的方式執行。   開發人員在自己筆記本上建立並測試好的容器,無需任何修改就能夠在生產系統的虛擬機器、物理伺服器或公有云主機上執行。    容器與虛擬機器的區別

006、容器 WhatWhyHow(2018-12-21 周五)

why 筆記 2-2 如何 -i logs 進程 www 軟件打包 參考https://www.cnblogs.com/CloudMan6/p/6751516.html What - 什麽是容器? 容器是一種輕量級、可移植、自包含的軟件打包技術,是應用程序可

Jenkins 創始人:持續交付的 WhatWhyHow

本文首發於 JenkinsCI 公眾號,源自 Jenkins 的創始人 Kohsuke Kawaguchi (簡稱 KK)在 QCon 北京上的主題演講:「Why,What,and How of Continuous Delivery」。沒聽到現場演講,仔細研讀PPT之後,整理筆記如下。 編外的話

Why, How and When to Scale your Features

Why, How and When to Scale your FeaturesFeature scaling can vary your results a lot while using certain algorithms and have a minimal or no effect in other

What is dependency injection and when/why should or shouldn't it be used?

參考:https://stackoverflow.com/questions/130794/what-is-dependency-injection 原文:https://www.jamesshore.com/Blog/Dependency-Injection-Demystified.html The R

FindBugs What Why How

什麼是靜態程式碼分析 靜態程式碼分析是指無需執行被測程式碼,僅通過分析或檢查源程式的語法、結構、過程、介面等來檢查程式的正確性,找出程式碼隱藏的錯誤和缺陷,如引數不匹配,有歧義的巢狀語句,錯誤的遞迴,非法計算,可能出現的空指標引用等等。 在軟體開發過程中,靜態程式碼分

有關容器的whatwhyhow的問題

what---什麼是容器? 容器是一種輕量級、可移植、自包含的軟體打包技術,為應用提供封裝和隔離,建立並測試好的容器無需任何修改就能夠在生產系統的虛擬機器、伺服器或者公有云主機上執行。 容器比虛擬機器的優勢在於: 體積上比虛擬機器小很多—-所有的容器共享

Failing Fast: What and Why?

Failing Fast: What and Why?Failing fast is a mantra which is talked about a lot. It has become like a jargon being thrown around. Let’s explore and find ou

Coin Burning: What is and How Does it Work?

Coin Burning: What it is and How Does it Work?This guide to coin burning explores the question of what is coin burn and the reasons behind burning coin s i

Why & How Words With Friends Is Adopting React Native

Why & How Words With Friends Is Adopting React NativeJohn Bacon | Principal Software EngineerBrian Liang | ArchitectPeter Turner | Principal Software E

序列化和反序列化系列部落格(一)—— What and Why

引言: 序列化和反序列化幾乎是工程師們每天都要面對的事情,但是要精確掌握這兩個概念並不容易:一方面,它們往往作為框架的一部分出現而湮沒在框架之中;另一方面,它們會以其他更容易理解的概念出現,例如加密、持久化。然而,序列化和反序列化的選型卻是系統設計或重構一個重要的環節,在分散式、大資

學習技術的三部曲:WHATHOWWHY(編程隨想的博客)

能夠 繼續 log 操作 並且 問控制 高手 析構函數 導致 ★第一步:WHAT   所謂的“WHAT”也就是“What is it?”——這是最簡單的層次。在這個層次,你要搞清楚某個東東是【什麽】樣子的?有【什麽】用處?有【什麽】特性?有【什麽】語法?......  舉例

What is One Hot Encoding? Why And When do you have to use it?

  So, you’re playing with ML models and you encounter this “One hot encoding” term all over the place. You see the sklearn documentatio

Why?What?How?

java 學習書籍推薦: 網路 TCP IP 詳解卷1: 協議 原書第二版 計算機網路-自頂向下方法 圖解HTTP 計算機網路第七版(謝希仁)–專業課課本 作業系統 深入理解誒計算機系統(原書

學習的三部曲:WHATHOWWHY

下面是我今天寫的一個Blog,轉貼給大夥兒,希望論壇裡的牛人多提批評意見。 最近幾天有些網友在郵件裡面問我關於學習的問題。有很多人覺得工作了幾年,也學會了不少的類庫、框架、甚至語言,但是感覺自己的能力沒有太大的提高。因此今天來­說一下我個人對這方面的體會。  我把學習歸類為