をsnd_pcm_readi`これは私がミクロからデータを読み込む機能があるが、なぜ私は、コールnew
、アプリケーションのクラッシュによるバッファを割り当てるとき、私はmalloc
を使用している場合、それOK私はALSA libにの機能を使用する場合、それは `クラッシュが
void AlsaMicrophoneWrapper::readThreadFunction()
{
int bufSize = m_bitsPerFrame * m_frames;
// char *buf = new char(bufSize);//crash
char *buf = (char *)malloc(bufSize);
if (NULL == buf)
{
printf("Snd_ReadThread allocate mem error\n");
return;
}
snd_pcm_sframes_t retFrame;
ssize_t returnCode;
while (true)
{
retFrame = snd_pcm_readi(m_pcmHandle, buf, m_frames);
if (-EPIPE == retFrame)
{
snd_pcm_prepare(m_pcmHandle);
}
else if (retFrame > 0)
{
returnCode = m_writer->write(buf, retFrame);
if (returnCode <= 0)
{
printf("Failed to write to stream.\n");
}
}
}
free (buf);
return;
}
それでなければならない: 'のchar *のBUF =新しいCHAR [BUFSIZE];' 'ない(BUFSIZE)'。また、newを使用する場合はdeleteを使用してください。 –