C++ C+;中的函数中存在错误的alloc异常+; 短* < /p>
我的功能代码是 这个函数执行了数千次,因为在生成的内存位置有一个错误的分配,所以有人能告诉我如何解决这个问题吗 getoneframe函数调用的代码C++ C+;中的函数中存在错误的alloc异常+; 短* < /p>,c++,function,exception,C++,Function,Exception,我的功能代码是 这个函数执行了数千次,因为在生成的内存位置有一个错误的分配,所以有人能告诉我如何解决这个问题吗 getoneframe函数调用的代码 short *myData = NULL; sock.SetCameraIP(m_destination_IP, m_destination_port); m_startCamFlag = sock.StartCamera(); if (!m_startCamFlag) { std::cout << "Unable to St
short *myData = NULL;
sock.SetCameraIP(m_destination_IP, m_destination_port);
m_startCamFlag = sock.StartCamera();
if (!m_startCamFlag)
{
std::cout << "Unable to Start the Camera" << std::endl;
}
std::thread acquiringThread(callReceiveFunction, sock);
acquiringThread.detach();
while (flag)
{
myData = sock.GetOneFrame();
ImageShow(myData);
Sleep(15);
if (GetAsyncKeyState(VK_ESCAPE))
{
flag = false;
}
}
short*myData=NULL;
sock.SetCameraIP(m_目的地IP、m_目的地端口);
m_startCamFlag=sock.StartCamera();
如果(!m_startCamFlag)
{
std::cout您的函数在行中分配动态内存
short *m_returnframeBuffer = new short[BYTE_PER_FRAME];
并将指向调用函数的指针返回为
return m_returnframeBuffer;
听起来调用函数没有释放内存,这会导致在调用函数数千次时抛出bad\u alloc
确保调用函数在使用完内存后释放内存
short* buffer = SomeCameraObject.GetOneFrame();
// Use buffer
// Deallocate memory.
delete [] buffer;
将调用函数中的while
循环更新为:
while (flag)
{
myData = sock.GetOneFrame();
ImageShow(myData);
Sleep(15);
if (GetAsyncKeyState(VK_ESCAPE))
{
flag = false;
}
// Add this line
delete [] myData;
}
while(m_bufferIndex1!=每帧最大字节数)
{
m_myChar1=m_frameBuffer1[m_bufferIndex1++];
m_myChar2=m_frameBuffer1[m_bufferIndex1++];
value=(m_myChar1@Mickey,正是我所想的。添加delete[]myData;
作为调用函数中循环的最后一条语句。
while (m_bufferIndex1 != MAX_BYTE_PER_FRAME)
{
m_myChar1 = m_frameBuffer1[m_bufferIndex1++];
m_myChar2 = m_frameBuffer1[m_bufferIndex1++];
value = (m_myChar1 << 8) | m_myChar2;
m_returnframeBuffer[m_bufferIndex2++] = value;
}