關於delete後,給指標NULL的問題,vc

2021-03-04 01:14:21 字數 2587 閱讀 4896

1樓:匿名使用者

在函式裡面置null,不能改變str的值,(傳參拷貝問題),可以在外面調這個函式後置,不置的話肯定會有問題的,就是多個地方都使用該指標,你這邊釋放了,那邊不知道,一判斷還不空,那玩笑可就開大了

2樓:匿名使用者

最好的bai習慣是=null,為什麼呢?因為怕這du這個指標亂指,然zhi後你後面不

dao小心又用了,專那可就慘了,如果=null,這屬個指標就啥都不指了,比較乖

簡而言之:指標所指的記憶體被你釋放了,但是指標還是存在的,=null就是不讓指標亂指。好的程式設計習慣就該如此。

3樓:匿名使用者

delete貌似不需要

呼叫free函式需要。

4樓:匿名使用者

這裡沒有必要了把str = null,這裡的 str 是個形參,已經把實參 指標的內容釋放了,但 給形參賦予null,改變不了實參的值.要賦null只能在函式外面給實際的指標賦null了.

c++中delete後賦null的問題

5樓:莫讓年華敷水流

new是跟系統借一塊記憶體,成功的話,系統給你一塊記憶體,並且系統會保證不會把你分配的記憶體給其他申請到

delete是跟系統還一塊記憶體,成功的話,系統會讓其他人可以分配到這塊記憶體

而new和delete的記憶體內容系統是不關心的,所以一般malloc後,都會初始化記憶體

釋放記憶體是沒有改變記憶體內容

指標是指向那塊記憶體,申請到了記憶體就會指向那塊記憶體,跟記憶體內容沒有關係

如: int* pint = new int;

pint = null; //這裡跟分配的記憶體沒關係,只是將pint這個指標指向null而已 (這裡由於沒有delete會記憶體洩漏)

6樓:匿名使用者

說的也是啊,析構之後ptr也會被銷燬的不需要置為null執行時發生什麼錯誤?

是不是你的c不是動態分配的…在你這裡delete ptr相當於delete c…

你把接受const char*的建構函式發來

7樓:心燈一豆

**沒貼全,目測是你**問題

c++ 中delete一指標後,該指標的是什麼?是 null 嗎?

8樓:

delete一個指標之後,只是**指標指向位置的空間,而指標本身的值不變。你需要手工將其賦值為null。

另外delete null的話不會有任何事情發生。

9樓:匿名使用者

不是 delete後就變成懸垂指標 就是沒有用的指標了最好自己將他指向null

如 delete p;

p = 0; // 0 == null

這樣就安全了。

否則會產生不必要的後遺症(在大型程式裡你就會懊惱了,當然這個我也不太懂了)

10樓:匿名使用者

這書我看過了 c++沉思錄 c++primer 上面都提到智慧指標 是這樣的:u_ptr這個類算是**類吧(有時叫它控制代碼類 其實我也不知道為什麼) 因為它有計數 計數的是有多少個物件是u_ptr類**的類(原始的) 每建立或者複製這種型別的物件 實際上在u_ptr中的計數加1(有多少個原始的類型別的物件指向u_ptr) 只有一個u_ptr指向原始的類(或是別的) 注意:當u_ptr中的計數為0時就是沒有物件對向他 所以執行delete p 而**類本身沒有動態申請堆空間 釋放的只是原始類(u_ptr指向的)申請的空間 我覺得你沒有弄清楚指標p和u_ptr之間的區別

會的!p成為野指標 如果在訪問p將出錯 因為p指向的記憶體空間以不在 但p還是指向原來的地方啊…

11樓:匿名使用者

c++ 中delete一指標後,該指標為野指標。其值不變,還是指向原來的單元,但若訪問這個單元,結果是無法預料的。

12樓:匿名使用者

delete刪除的只是該指標指向的記憶體,該指標變成一個野指標,需要重置為null。

13樓:匿名使用者

野指標,需要置null

在c++中,指標被delete後而不賦值為null,那該指標是什麼樣的狀態,它有指向的記憶體空間嗎?

14樓:匿名使用者

那個指標的值是不變的,也就是還指向你申請來的那塊空間但是。即然delete了,那塊空間就不再規你的程式所有了,所以雖然你的那個指標還指向那塊記憶體空間

但你並不具有對那塊空間的使用權,訪問權。

所以當你在delete後如果試圖使用的話,程式就會崩潰所以最好賦上null,防止你寫程式時不小心引用導致錯誤

15樓:匿名使用者

指標只是儲存所指物件的地址,沒有任何狀態資訊。delete之後,本身指標的內容是不會改變的,只不過它裡面儲存的地址所對應的記憶體在系統裡標記為未使用的罷了。那段記憶體隨時可能分配給其它程序或者程序內的其它變數。

你應該避免使用delete後的記憶體,這是你的事。為了容易標識,所以才賦值為null。

c中delete一指標後,該指標的是什麼 是NULL嗎

delete一個指標之後,只是 指標指向位置的空間,而指標本身的值不變。你需要手工將其賦值為null。另外delete null的話不會有任何事情發生。不是 delete後就變成懸垂指標 就是沒有用的指標了最好自己將他指向null 如 delete p p 0 0 null 這樣就安全了。否則會產生...

關於c子類繼承的this指標的問題

cout d 我想應該是初始化順序吧 首先 cb類 初始化 基類 cd,這時候還並不知道派生類的 b 所以會報錯 初始完基類以後才會初始化自己,這個時候才會有成員 b 首先你要明確一點,this指標屬於某一具體物件,cb cb定義時,this指標屬於cb,可以呼叫cb的資料和函式成員,cd cd定義...

C 裡指標變數自身值的問題,關於c 中指標變數的問題

pt 1244996 是pt的地址 p 後 p p 優先順序高,因此 地址變為了 1245000 注意整形指標 1,其實就是 4,因為整形的size是4位元組 p 1245064 是地址1245000 對應的記憶體值,是不確定的 p 1244992 是p這個指標本身在記憶體中存放的位置,這個也是不確...