草庐IT

缓冲池

全部标签

c++ - 如何通过缓冲区大小来优化读写?

如何在标准C++/C++11(无POSIX函数)中优化std::ifstream和std::ofstream的读写速度?(1我不知道缓冲区的确切作用所以你能确认一下吗:对于读取:文件的很大一部分预加载到内存中(因此缓冲区大小定义了这大部分的大小)(2)用于写入:数据写入内存,一旦缓冲区已满,它就会从内存传输到文件系统(3)如何设置std::ifstream和std::ofstream的缓冲区大小?(4)考虑到我使用非常大的二进制文件(几个10GB),并且文件系统通常是读取/写入大型文件的最佳选择,我可以定义一个大约100MB的缓冲区大小吗?如果它会降低性能,为什么?(5)最后,从ifs

c++ - cin.clear() 如何清除输入缓冲区?

根据我的阅读,cin.clear()重置标志,但这如何清除输入缓冲区? 最佳答案 cin.clear()对输入缓冲区没有影响。正如您正确阅读的那样,它会重置iostate标志(从技术上讲,用std::ios_base::goodbit替换它们的当前值) 关于c++-cin.clear()如何清除输入缓冲区?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/20832289/

c++ - boost::asio 如何以正确的方式读取完整缓冲区?

我正在学习boost::asio,现在对读取完整缓冲区的正确方法感到困惑。例如,当建立连接时,我想用下一种方式读取uint32_t:std::uint32_tsize;size_tlen=m_socket.read_some(buffer(&size,sizeof(std::uint32_t)));如您所见,我设置了缓冲区大小。在其他情况下,我在read_some数据上收到了带有长度的len。所以主要问题是:boost::asio是否保证如果我在调用时设置了所需的缓冲区长度,就会读取uint32_t的所有4个字节缓冲区?或者如果不能保证——我如何才能读取完整的缓冲区?(所有4个字节)

python - 如何使用 boost.python 将预填充的 "unsigned char*"缓冲区传递给 C++ 方法?

我有一个C++类,它有一个成员函数,它接受一个unsignedchar*缓冲区和一个unsignedint长度作为参数并对它们进行操作。我已经用Boost::Python包装了这个类,并希望将一个预填充的缓冲区从Python脚本传递给这个类。Python端缓冲区是使用struct.pack创建的。我不知道如何使参数类型匹配并不断收到Boost.Python.ArgumentError。include/Example.h#ifndefEXAMPLECLASS_H_#defineEXAMPLECLASS_H_#includeclassExampleClass{public:ExampleC

c++ - 使用 wcsncpy_s 复制字符串时缓冲区太小

这段C++代码有点蹩脚,但我需要维护它。我似乎无法弄清楚“缓冲区太小”的问题。我正在使用VisualStudio2010。我将根据我在调试器中看到的值提出重现所需的最少代码。抱歉,我不会测试实际的片段本身。另外,由于我的系统剪贴板在我调试时“很忙”,我不能只是复制和粘贴,所以一些错误可能会在某处蔓延,但我会仔细检查一些东西。相信我,您不想看到整个函数-它太长了,没有任何意义:)来自tchar.h#define_tcsncpy_swcsncpy_s来自afxstr.h:typedefATL::CStringT>CString;来自WinNT.h:typedefWCHARTCHAR,*PT

c++ - 任何程序都会检测到 C/C++ 结构中的缓冲区溢出吗?

考虑以下程序:structabc{intx[5];inty[5];};intmain(){structabctest;test.y[0]=10;printf("%d",test.x[5]);}(借自Isitlegaltooverrunoneelementofastructtoviewanother?)BoundsChecker不会将此检测为溢出。是否有任何程序可以检测此类编程错误? 最佳答案 clang确实如此,即使没有打开特殊标志:$clangexample.c-oexampleexample.c:13:18:warning:ar

c++ - 如何实现 cv::Mat 对象的循环缓冲区(OpenCV)?

我正在尝试为我的程序实现一个循环缓冲区。缓冲区用于在两个线程之间共享数据,如下所示。我使用OpenCV从相机(线程1)中抓取视频帧。然后我想将这些数据存储在一个循环缓冲区中,以便线程2可以从缓冲区中获取数据。如何在C++中为cv::Mat对象实现循环缓冲区?我知道如何为标准C++对象(如int或char)创建循环缓冲区,但我无法使用cv::Mat类型的对象。有什么建议吗? 最佳答案 解决了,看Threadsafeimplementationofcircularbuffer 关于c++-如

c++ - boost::asio::streambuf - 如何重用缓冲区?

我正在实现使用asiosocket.async_read()和boost::asio::async_read_until()方法从套接字异步读取数据的TCP服务器。两者都使用相同的处理程序从boost::asio::streambuf读取数据。通过async_read()调用的完美处理程序:voidhandle_read(constboost::system::error_code&ec,std::size_tytes_transferred)){m_request_buffer.commit(bytes_transferred);boost::asio::streambuf::con

c++ - WinAPI 双缓冲

默认的winAPI应用程序没有双缓冲。相反,它在确保只绘制需要绘制的内容方面做得非常非常好,并赋予它无缝的外观。但是,当您调整窗口大小时,整个内容都需要重新绘制,这会导致控件、选项卡背景以及有时选项卡的白色之间出现闪烁。所以我的问题是,在我的应用程序中支持双缓冲的最简单方法是什么? 最佳答案 创建一个窗口大小的位图,渲染到该位图中,完成后将其blit回窗口。您可以在现有代码中进行非常直接的就地替换。不要使用呈现到窗口中的设备上下文,而是使用呈现到位图中的设备上下文,并且只使用原始DC将位图blit回来。一定要保留位图——不要在每次绘

c++ - 在缓冲区对象上运行并通过着色器更改它的数据?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。有没有办法在Buffer对象上运行着色器并使用着色器用其他数据修改它?换句话说:有没有办法在着色器中创建统一的全局变量并可修改?