2011-10-08 61 views
0

我剛剛更新到獅子,現在我的應用程序崩潰,在舊版本中工作正常。它在沒有日誌的memset函數上崩潰。得到崩潰om內存集更新到獅子和xCode

unsigned char *theValue; 
add(theValue, someotherValues); 

我已經過了theValue參考作用

add(unsigned char *inValue, some other perameter) { 
memset(inValue,0,sizeOf(inValue)); // **here it is crashing** 
} 
+0

什麼'theValue'點?而且,即使它指向某種合理的東西,代碼也沒有意義;你試圖設置指針'theValue'指向的字符,但是使用指針本身的大小來確定要設置多少內存。 –

+0

我編輯過的問題。 – iOSPawan

回答

2

在聲明theValue和致電add()之間是否真的沒有代碼?如果是這樣,那就是你的問題。您將傳遞一個隨機值作爲memset()的第一個參數。

對於這個代碼是有道理的,你要分配的內存塊theValue並通過其規模add(),像這樣:

unsigned char *theValue = new unsigned char[BUFSIZE]; // Or malloc 
add(theValue, BUFSIZE, ...); 

void add(unsigned char *inValue, size_t bufsize, ...) { 
    memset(inValue, 0, bufsize); 
    ... 
} 
+0

謝謝@馬塞洛,你救了我的一天。 – iOSPawan

1

你的inValue分配內存?

1)

add(unsigned char *inValue, some other perameter) { 
    inValue = (unsigned char*)malloc(sizeof(inValue)); 
    memset(inValue,0,sizeOf(inValue)); // **here it is crashing** 
} 

2)

theValue = (unsigned char*)malloc(sizeof(inValue)); 
add(theValue, ...) 
1
unsigned char *theValue; 

這指向的存儲器(隨機比特或0)。在您撥打malloc之前,您並不擁有它所指向的內容,因此您無法真正記憶它。

+0

這是錯過了'sizeof()'全部濫用的觀點。 –

+0

剛從我看到的第一個問題開始;我想我們會處理任何其他人,因爲他遇到他們:) – deanWombourne