我有这个缓冲区:
SP16 audio_data[4000]; //Typershort SP16
它将充满音频样本:
memcpy(audio_data, global_data, size_chunck);
但如果我free(audio_data[4000])
我会触发一个断点,所以我会收到一个错误。为什么呢?
答案 0 :(得分:2)
因为您只能通过free()
,malloc()
或calloc()
获得realloc()
内存。
答案 1 :(得分:1)
如果free
内存未由malloc
或类似内容分配,则您的程序可能会导致错误。
您的变量未使用malloc
或类似内容进行分配,因此无需free
。
来自C99标准 -
7.22.3.3自由功能
- [...]否则,如果参数与先前由内存管理函数返回的指针不匹配,或者如果通过调用free或realloc释放了空间,则行为未定义。
醇>