簡體   English   中英

當我嘗試釋放分配了地址的NSString時為EXEC_BAD_ACCESS

[英]EXEC_BAD_ACCESS when i try to release a NSString that has an address allocated to it

我有一個我嘗試發布的NSString。

問題是,在某些情況下,當我嘗試釋放它時會得到EXC_BAD_ACCESS NSString有一個分配給它的地址(我可以在底部看到它在0xABCDEF處分配了內存)。

當有東西存在時,如何在緩解的同時避免這個問題?

您可以釋放一個對象,但是指向它的指針仍然可以有一個值。 只是它是一個垃圾值(即, 懸空的指針 )。

這就是為什么您看到很多代碼的原因,例如:

[myObject release];
myObject nil;

首先釋放對象,然后將指針設置為nil 這樣,發送給它的任何消息都將無提示地失敗(因為將消息發送到Objective-C中的nil對象是安全的),而不是崩潰,就像您的應用程序正在發生的那樣。

由於您正在檢查指針,因此我懷疑您在內存管理方面做得很奇怪。 別。 只需遵循內存管理規則,然后僅釋放您擁有的對象。

您可能已經在已發布的字符串上調用了[release] 您如何分配它? 釋放或自動釋放對象時,不會自動將其設置為nil(0x0)。

[[NSString alloc] initWithSomething]需要釋放調用。

[NSString stringWithSomething]不會按照約定自動發布。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM