免费 - SP16缓冲区

时间:2015-10-13 16:03:18

标签: c

我有这个缓冲区:

SP16 audio_data[4000]; //Typershort SP16

它将充满音频样本:

memcpy(audio_data, global_data, size_chunck);

但如果我free(audio_data[4000])我会触发一个断点,所以我会收到一个错误。为什么呢?

2 个答案:

答案 0 :(得分:2)

因为您只能通过free()malloc()calloc()获得realloc()内存。

答案 1 :(得分:1)

如果free内存未由malloc或类似内容分配,则您的程序可能会导致错误。

您的变量未使用malloc或类似内容进行分配,因此无需free

来自C99标准 -

  

7.22.3.3自由功能

     
      
  1. [...]否则,如果参数与先前由内存管理函数返回的指针不匹配,或者如果通过调用free或realloc释放了空间,则行为未定义。
  2.