0

这是objective-c姊妹问题,它可能会提供一些见解: c and 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_ADPCMstate是 adpcm_state 结构的全局实例变量。http://codepad.org/5vyd0CXA是完整的代码。该函数在 *outp++ = valprev;发生时崩溃,并且我从调试器中收到 BAD ACCESS 语句。outp 是指向 outData 的指针,而 valprev 是 long。

问题必须在于我对指针的理解modulatedBytes和/或decompressedBytes

我对C和更低级别的概念知之甚少。我希望对我的问题有所了解。

4

1 回答 1

2

您将short *decompressedBytes = NULL;作为outdata参数传递给adpcm_decoder(),然后尝试取消引用它。你忘记分配了decompressedBytes吗?

于 2013-09-22T02:20:30.460 回答