C 建立動態物件後指標刪除問題

時間 2022-02-15 12:00:06

1樓:匿名使用者

你不需要使用時就可以刪除動態物件,區域性指標變數在整個函式範圍內有效,全域性指標變數在整個程式內有效,不存在刪除的問題

2樓:

是的,指標此時還是指向那個刪除了的記憶體空間,但此時不能引用那記憶體的內容,因為這些內容是不定的,這個指標還可以重新賦值,重新指向另外的記憶體地址。指標也是變數,有它的作用域,離開作用域,它就被銷燬了,那指標就不存在了

3樓:匿名使用者

在節目中,而不是使用新應用程式的記憶體空間,不能刪除釋放。空間

程式設計中經常使用的堆記憶體分配,常用的運算子是新的,這個時候一定使用delete函式來釋放申請的記憶體。

需要遵循的原則:new和delete成對。只有一個是不正確的或非標準的字眼,瞬間能夠編譯,將有安全隱患;

/ /的/>一個malloc空間的方案,由函式free()釋放的記憶體。

例子:字元* ptr = null;

ptr =(char *)malloc的(100 * sizeof(char)的的);

/ / ....

免費(ptr);

ptr = null;

2,使用新的應用程式的記憶體空間,你可以刪除釋放;(new和delete成對)

例: br /> * =新的詮釋;

/ / ....

刪除/ /釋放的空間單個int

注:malloc和free的是,新的c + + / c語言的標準庫函式/刪除是c + +運算子。它們可以被用來為一個記憶體動態申請和釋放記憶體。

無法用於內部資料型別的物件,maloc /免費要求,以滿足動態物件。自動執行建構函式建立的物件,該物件被自動執行的消亡前的解構函式。是不能夠執行的任務的建構函式和解構函式的malloc / free的庫函式,而不是運營商,而不是編譯器控制的能力範圍內徵收的malloc / free。

所以c + +語言需要一個完整的動態記憶體分配和初始化操作符new和delete操作符一個完整的清理和釋放記憶體工作。注意新/ delete是不是庫函式。

在c++中,為什麼用基類指標ap建立派生類動態物件,用delete刪除物件時,只呼叫基類的解構函式呢??

4樓:匿名使用者

如果函式不是 virtual 的,則進行的是靜態繫結,即在編譯期間就決定了其呼叫的函式。

對於上面的程式來說, delete bp2;,即使基類指標bp2實際上指向的是派生類物件,但是編譯器也會把這個基類指標和指向型別(基類)的解構函式進行靜態繫結,從而達不到呼叫派生類解構函式的目的。

5樓:陽頂天鹿鼎記

這是類的繼承的一個特性,父類的一切東西都會由子類繼承。

c++ 指向結構體的陣列指標 動態分配記憶體後如何刪除

6樓:改本景翠巧

#include

using

namespace

std;

struct

node

;int

main()

可以看看這個裡面的,單連結串列就是你描述的那種用法

上面那個是一個簡單的建立單節點的

7樓:

free(arry);

8樓:匿名使用者

修改如下:

#include

#include

#include

#include

#include

#include

struct point

;void main()

cout<

int count=0;

for(int i=0;i

delete p;

9樓:盈星翁樂康

ls的如果不知道請不要隨便誤導別人哦

其實你這個記憶體分配沒錯,但是你的記憶體訪問出錯了,小哥,你應該知道陣列的計數是從0開始的吧?比如說陣列

inta[2],那麼2個元素就是a[0],a[1],沒有a[2]哦,所以

for(int

i=1;i<=n;i++)

訪問出界了,只要把for語句改為

for(int

i=0;i

同時以後你也記住沒有釋放記憶體的錯誤編譯器是檢測不出來的

10樓:沉淪街角的寂寞

動態建立陣列舉例:

int **t=new int *[3];//行for(int i=0;i<3;i++)

動態刪除陣列舉例:

for(int i=0;i<3;i++)

t=null;

程式舉例:

#include

using namespace std;

void main()

for(int i=0;i<3;i++)

delete [3]t;

t=null;

} 以上均來自網際網路,如果有侵權,聯絡以便保證你的利益

C語言指標動態記憶體分配,C語言中的動態記憶體分配的用法舉例

void malloc size t size 這個函式請求分配大小為size位元組的記憶體,並返回指向該塊記憶體起始位置的指標 它接受的引數型別size t是unsigned int的一個typedef,這種型別用來表示資料型別的大小 如char型別的大小為1 位元組 它返回的是一個void 型別...

介紹一下C 建立物件和C建立物件有什麼不同分別舉例

預設的話,最顯著的差別在於 c 中 new 建立的物件是開發者自己管理,需要自己釋放記憶體c 中 new 建立的物件是虛擬機器管理的,有 gc 負責垃圾記憶體 c classa pa new classa delete pa 手動 記憶體c classa a new classa 虛擬機器管理,不需...

如何利用C建立動態連結庫,C 中怎麼建立和引用動態連結庫

把你建立的類庫編譯一下就是了 你會在release或debug目錄下看到一個新鮮出爐的dll的.建立專案時選擇建立類庫一項 在class1中新增函式 public void hello 在專案引用中記得新增 system.windows.forms 一 建立動態連結庫 1 新建一個類庫 2 編寫該類...