0
下面是Objective-C的姐姐的問題,這可能會提供一些見解: c and objective-c -- const char* and char*Ç - 爲const char *與char *鑄造(ADPCM解碼)
我做了以下內容:
g_ADPCMstate.valprev=32767;
g_ADPCMstate.index=0;
const char *modulatedBytes1 = {0xca,0x82,0x00,0x00,0x80,0x80,0x80,0x80};
char *modulatedBytes = (char *)modulatedBytes1;
unsigned int moduleatedLength = 8;
short *decompressedBytes = NULL;
adpcm_decoder(modulatedBytes, decompressedBytes, moduleatedLength, &g_ADPCMstate);
該函數聲明爲:
void
adpcm_decoder(indata, outdata, len, state)
char indata[];
short outdata[];
int len;
struct adpcm_state *state;
g_ADPCMstate
是一個adpcm_state結構全局實例變量。 http://codepad.org/5vyd0CXA是完整的代碼。該函數在發生*outp++ = valprev;
時崩潰,並從調試器中獲取BAD ACCESS語句。 outp是outData的指針,而valprev是long。
的問題必須是在我的指針的理解,要麼modulatedBytes
和/或decompressedBytes
我對C缺乏瞭解和較低水平的概念。我很想深入瞭解我的問題。
我該如何分配它?我應該存儲隨機比特嗎? – stackOverFlew
@stackOverFlew只需使用'malloc()'分配它,然後讓'adpcm_decoder'負責初始化它(通過'* outp ++ = valprev'行)。 –