0

これは、いくつかの洞察を提供する可能性があるobjective-cの姉妹の質問です: cとobjective-c -- const char* and char*

私は次のことをしています:

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_ADPCMstateadpcm_state 構造体のグローバル インスタンス変数です。http://codepad.org/5vyd0CXAは完全なコードです。発生すると関数がクラッシュ *outp++ = valprev;し、デバッガーから BAD ACCESS ステートメントを取得します。outp は outData へのポインタですが、valprev は long です。

問題は、ポインターとmodulatedBytesおよび/またはのいずれかについての私の理解にある必要がありますdecompressedBytes

私は C および下位レベルの概念をほとんど理解していません。私の問題についての洞察が欲しいです。

4

1 に答える 1

2

に引数short *decompressedBytes = NULL;として渡し、それを逆参照しようとします。割り当てるのを忘れましたか?outdataadpcm_decoder()decompressedBytes

于 2013-09-22T02:20:30.460 に答える