自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

闡述C++程序中的內(nèi)存錯(cuò)誤

開發(fā) 后端
許多編程人員學(xué)習(xí)C++總結(jié)經(jīng)驗(yàn)為,有的覺得C++語言是一門獨(dú)立的語言,并不是在C語言的基礎(chǔ)上,可以直接學(xué)習(xí)C++ 程序不必先從C下手。

本文將帶您了解一些良好的和內(nèi)存相關(guān)的編碼實(shí)踐,以將內(nèi)存錯(cuò)誤保持在控制范圍內(nèi)。內(nèi)存錯(cuò)誤是 C 和 C++ 程序的禍根:它們很普遍,認(rèn)識(shí)其嚴(yán)重性已有二十多年,但始終沒有徹底解決。

C 和 C++ 程序中的內(nèi)存錯(cuò)誤非常有害:它們很常見,并且可能導(dǎo)致嚴(yán)重的后果。來自計(jì)算機(jī)應(yīng)急響應(yīng)小組(請(qǐng)參見參考資料)和供應(yīng)商的許多最嚴(yán)重的安全公告都是由簡(jiǎn)單的內(nèi)存錯(cuò)誤造成的。

自從 70 年代末期以來,C 程序員就一直討論此類錯(cuò)誤,但其影響在 2007 年仍然很大。更糟的是,如果按我的思路考慮,當(dāng)今的許多 C 和 C++ 程序員可能都會(huì)認(rèn)為內(nèi)存錯(cuò)誤是不可控制而又神秘的頑癥,它們只能糾正,無法預(yù)防。

但事實(shí)并非如此。本文將讓您在短時(shí)間內(nèi)理解與良好內(nèi)存相關(guān)的編碼的所有本質(zhì):

正確的內(nèi)存管理的重要性存在內(nèi)存錯(cuò)誤的 C 和 C++ 程序會(huì)導(dǎo)致各種問題。如果它們泄漏內(nèi)存,則運(yùn)行速度會(huì)逐漸變慢,并最終停止運(yùn)行;如果覆蓋內(nèi)存,則會(huì)變得非常脆弱,很容易受到惡意用戶的攻擊。

從 1988 年著名的莫里斯蠕蟲攻擊到有關(guān) Flash Player 和其他關(guān)鍵的零售級(jí)程序的最新安全警報(bào)都與緩沖區(qū)溢出有關(guān):“大多數(shù)計(jì)算機(jī)安全漏洞都是緩沖區(qū)溢出”,Rodney Bates 在 2004 年寫道。

在可以使用 C 或 C++ 的地方,也廣泛支持使用其他許多通用語言(如 Java?、Ruby、Haskell、C#、Perl、Smalltalk 等),每種語言都有眾多的愛好者和各自的優(yōu)點(diǎn)。但是,從計(jì)算角度來看。

每種編程語言優(yōu)于 C 或 C++ 的主要優(yōu)點(diǎn)都與便于內(nèi)存管理密切相關(guān)。與內(nèi)存相關(guān)的編程是如此重要,而在實(shí)踐中正確應(yīng)用又是如此困難,以致于它支配著面向?qū)ο缶幊陶Z言、功能性編程語言、高級(jí)編程語言、聲明性編程語言和另外一些編程語言的所有其他變量或理論。

與少數(shù)其他類型的常見錯(cuò)誤一樣,內(nèi)存錯(cuò)誤還是一種隱性危害:它們很難再現(xiàn),癥狀通常不能在相應(yīng)的源代碼中找到。例如,無論何時(shí)何地發(fā)生內(nèi)存泄漏,都可能表現(xiàn)為應(yīng)用程序完全無法接受,同時(shí)內(nèi)存泄漏不是顯而易見。#t#

因此,出于所有這些原因,需要特別關(guān)注 C 和 C++ 編程的內(nèi)存問題。讓我們看一看如何解決這些問題,先不談是哪種語言。
內(nèi)存錯(cuò)誤的類別

首先,不要失去信心。有很多辦法可以對(duì)付內(nèi)存問題。我們先列出所有可能存在的實(shí)際問題:

1.內(nèi)存泄漏

2.錯(cuò)誤分配,包括大量增加 free()釋放的內(nèi)存和未初始化的引用

3.懸空指針

4.數(shù)組邊界違規(guī)

這是所有類型。即使遷移到C++ 程序,這些類型也不會(huì)有明顯變化;無論數(shù)據(jù)是簡(jiǎn)單類型還是 C 語言的 struct或 C++ 的類,C 和 C++ 中內(nèi)存管理和引用的模型在原理上都是相同的。以下內(nèi)容絕大部分是“純 C”語言,對(duì)于擴(kuò)展到 C++ 主要留作練習(xí)使用。

責(zé)任編輯:chenqingxiang 來源: 博客園
相關(guān)推薦

2010-01-25 14:56:08

C++程序

2011-06-16 09:28:02

C++內(nèi)存泄漏

2023-11-17 11:40:51

C++內(nèi)存

2010-01-11 10:01:25

C++的編程工具

2010-01-13 15:51:44

C++編程語言

2010-01-12 18:00:30

Visual C++

2011-07-15 01:10:13

C++內(nèi)存分配

2021-09-07 09:23:07

C++字符串算法

2024-01-09 09:23:12

指針C++

2010-01-11 09:28:34

C++編程

2019-09-29 00:25:11

CC++內(nèi)存泄漏

2011-04-13 16:50:54

CC++內(nèi)存

2010-01-12 09:39:58

C++語言

2010-01-12 09:59:08

Visual C++

2011-06-21 11:16:24

cc++

2010-01-22 14:53:21

2018-02-24 12:17:56

C程序內(nèi)存方式

2010-01-11 15:55:51

C++語言

2011-04-11 09:47:50

C++內(nèi)存管理

2010-01-13 17:12:26

C++編譯器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)