[英]ioctl return bad address with global array
我正在基於此文章研究ALSA: http : //equalarea.com/paul/alsa-audio.html#interruptex (最小的中斷驅動程序)
注意short buf[4096];
如果我們將其聲明為全局,則會提示錯誤地址錯誤。 如果我們將其聲明為int playback_callback (snd_pcm_sframes_t nframes)
的本地int playback_callback (snd_pcm_sframes_t nframes)
,則它將運行,有時會提示錯誤地址錯誤。 如果我們使用malloc
分配buf
,則錯誤消失了。
從源代碼snd_pcm_writei
可以看到,它調用ioctl
將緩沖區發送到設備。 那么,為什么ioctl
表現得像我描述的那樣?
我正在使用Ubuntu 14.04 64位
該程序是越野車。
buf
有足夠的空間來存儲4096個樣本,但是設備為每幀配置了兩個樣本,因此4096幀將使緩沖區溢出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.