c++ - C++ 函数中的 Bad_alloc 异常
问题描述
嗨,我是 C++ 编程新手,我有一个返回函数short*
我的功能代码是
这个函数执行了数千次,因为这个 bad_alloc 在内存位置生成,所以任何人都可以告诉我如何解决这个问题。
getoneframe 函数调用的代码
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 *m_returnframeBuffer = new short[BYTE_PER_FRAME];
并将指向调用函数的指针返回为
return m_returnframeBuffer;
听起来调用函数没有释放内存,导致bad_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;
}
推荐阅读
- c - 字符串未显示在 C 的控制台中
- python - 简单的 Python 多线程网络服务器,带有 Asyncio 和在主函数中调用的事件
- java - 如何将最后两位小数打印成整数
- c# - Entity Framework Core 使用 CurrentValues.SetValues 从其他实体更新实体属性,由于实体上的主键而失败
- callback - Scrapy:如何从页面爬取并正确返回调用页面?“缺少 1 个必需的位置参数:‘响应’。”
- c++ - 在这种情况下,“必须具有类或枚举类型的参数”是什么意思?
- python - 合并具有相同名称的列 - Python
- amazon-web-services - 如何在项目中部署 AWS CLI,以便以编程方式使用它?
- matlab - matlab中数组外的括号
- linux - 即使使用 docker run --cap-add=NET_ADMIN ,`ip link add ifb0 type ifb` 也无法在 Docker 上运行