这是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和较低级别的概念知之甚少。我希望能够深入了解我的问题。
答案 0 :(得分:2)
您将short *decompressedBytes = NULL;
作为outdata
参数传递给adpcm_decoder()
,然后尝试取消引用它。你忘了分配decompressedBytes
吗?