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

C++程序中的難點大揭秘

開發(fā) 后端
從計算角度出發(fā),每種編程語言都有各自的優(yōu)缺點, 無論是在C語言或C++程序的主要優(yōu)點都便于內(nèi)存管理密切相關(guān)。

其實C和C++程序中內(nèi)存管理和引用的模型在原理上都是相同的,下面介紹內(nèi)存錯誤以及內(nèi)存錯誤的四個類別它們分別是:內(nèi)存泄漏、錯誤分配,包括大量增加 free()釋放的內(nèi)存和未初始化的引用、懸空指針、數(shù)組邊界違規(guī)。

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

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

但事實并非如此。本文將讓您在短時間內(nèi)理解與良好內(nèi)存相關(guān)的編碼的所有本質(zhì):正確的內(nèi)存管理的重要性存在內(nèi)存錯誤的 C 和 C++程序會導致各種問題。如果它們泄漏內(nèi)存,則運行速度會逐漸變慢,并最終停止運行;如果覆蓋內(nèi)存,則會變得非常脆弱。

很容易受到惡意用戶的攻擊。從 1988 年著名的莫里斯蠕蟲攻擊到有關(guān) Flash Player 和其他關(guān)鍵的零售級程序的最新安全警報都與緩沖區(qū)溢出有關(guān):“大多數(shù)計算機安全漏洞都是緩沖區(qū)溢出”。

Rodney Bates 在 2004 年寫道。在可以使用 C 或 C++ 的地方,也廣泛支持使用其他許多通用語言(如 Java?、Ruby、Haskell、C#、Perl、Smalltalk 等),每種語言都有眾多的愛好者和各自的優(yōu)點。#t#

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

與少數(shù)其他類型的常見錯誤一樣,內(nèi)存錯誤還是一種隱性危害:它們很難再現(xiàn),癥狀通常不能在相應的源代碼中找到。例如,無論何時何地發(fā)生內(nèi)存泄漏,都可能表現(xiàn)為應用程序完全無法接受,同時內(nèi)存泄漏不是顯而易見。因此,出于所有這些原因,需要特別關(guān)注 C 和 C++ 編程的內(nèi)存問題。讓我們看一看如何解決這些問題,先不談是哪種語言。

內(nèi)存錯誤的類別

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

1.內(nèi)存泄漏

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

3.懸空指針

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

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

責任編輯:chenqingxiang 來源: NET130
相關(guān)推薦

2021-08-16 12:35:25

C語言內(nèi)存編程

2010-01-25 18:15:52

2010-01-25 14:56:08

C++程序

2010-02-02 18:34:00

Python

2011-04-13 16:50:54

CC++內(nèi)存

2011-06-21 11:16:24

cc++

2023-04-11 16:13:44

JavaScripSymbol前端

2010-01-14 09:55:30

C++標準庫

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2010-01-25 16:58:15

C++程序

2010-01-21 14:07:14

CC++聲明

2010-01-20 10:19:55

C++數(shù)組

2010-01-21 13:33:44

C++基類

2010-01-25 10:25:19

C++變量

2010-01-28 16:31:54

C++類型

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2020-08-21 13:20:36

C++If ElseLinux

2010-01-26 10:42:26

C++函數(shù)

2023-09-27 23:24:50

C++鏈表
點贊
收藏

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