【发布时间】:2018-05-31 01:21:52
【问题描述】:
当我在 C++ 中包含 cstdlib 时出现错误。
无法打开“malloc.c”:找不到文件 (file:///build/glibc-bfm8X4/glibc-2.23/malloc/malloc.c)。
(调试时出错。)
以下是部分代码:
#include <cstdlib>
#include <portaudio.h>
//...
static int paCallback( const void *inputBuffer, void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData )
{
/* Cast data passed through stream to our structure. */
paTestData *data = (paTestData*)userData;
float *out = (float*)outputBuffer;
unsigned int i;
(void) inputBuffer; /* Prevent unused variable warning. */
for( i=0; i<framesPerBuffer; i++ )
{
*out++ = data->left_phase; /* left */
*out++ = data->right_phase; /* right */
float currentSample = 0;
char *sampleData = new char[4];
for(int j = 0; j < 4; j++)
{
sampleData[j] = currentBuffer[¤tIndex + j];
}
currentSample = (float)atof(sampleData); //cstdlib is included to use atof
//gets audio sample data and forwards to PortAudio
data->left_phase = currentSample;
data->right_phase = currentSample;
currentIndex += 4;
}
return 0;
}
如果有帮助,我正在使用 Linux Mint 81.1。
【问题讨论】:
-
您究竟是如何包含它的?可以复制代码吗?
-
请至少发一个minimal reproducible example。
-
请添加您正在使用的命令行和确切的错误消息。仅仅包含
<cstdlib>不应导致“无法打开malloc.c:...”。 -
您在内存管理代码中造成了崩溃,调试器正在寻找您造成崩溃的任何函数的源代码。没有这个文件是正常的。
-
如果 currentBuffer 和 currentIndex 不是带有疯狂的重载运算符的对象,
currentBuffer[&currentIndex + j]不应该编译。
标签: c++ linux visual-studio-code linux-mint