草庐IT

c++ - 使用 ffmpeg 解码 Wma

我是ffmpeg的新手,我尝试使用api-example.c来解码wma文件。但是当我运行程序时,它给了我一个错误提示“frame_len溢出”。有谁知道如何解决这个错误?这是我的代码:extern"C"{#include#include"../libavcodec/avcodec.h"#include}#include#include#include#include#defineINBUF_SIZE4096#defineAUDIO_INBUF_SIZE20480#defineAUDIO_REFILL_THRESH4096intmain(intargc,char*argv[]){avc

c++ - 点集的最大四边形

我正在寻找一种方法来找到面积最大的四边形。我已经计算了凸包的点并按顺时针方向对它们进行了排序。我尝试了蛮力,但当然它太慢了。所以我在这里找到了最大三角形的算法:Howtofindlargesttriangleinconvexhullasidefrombruteforcesearch它看起来非常好,所以我尝试重新制作它。我有一个函数可以通过将四边形分成两个三角形来计算任何四边形的面积(在这个函数中我对输入点进行排序以确保我正在计算直角三角形)。在这里:intn=convexHull.size();intA=0;intB=1;intC=2;intD=3;intbestA=A;intbest

c++ - Size of the Byte 是否可以大于 octet 8 bits

我正在浏览http://www.parashift.com/c++-faq/index.html在那里我发现字节也可以是64位http://www.parashift.com/c++-faq/very-large-bytes.html.一个字节的那么多存储容量有什么用? 最佳答案 重点不在于大字节“本身”的用处,而在于,对于标准而言,字节是系统上的最小可寻址数量1;如果系统无法以小于64位的单位寻址其内存,则char将为64位。显然,在现代通用计算机上几乎不可能找到这种奇怪的东西,这些奇怪的东西出现在非常专业的硬件上(我听说DSP特

c++ - gcc8.2 和 (intel) icc19.0.1 之间的 constexpr 差异

以下代码在gcc8.2上编译但在icc19.0.1上编译失败:#includetemplateconstexprsize_tf(std::tupleconst&){return0;}templatesize_tg(Tuple&&t){staticsize_tconstexprv=f(t);returnv;}size_th(){std::tupletuple;returng(tuple);}我从icc收到的错误是:error:expressionmusthaveaconstantvaluestaticsize_tconstexprv=f(t);^note:thevalueofparame

c++ - std::hardware_destructive_interference_size 的可靠性

C++17引入了常量,这似乎对缓存感知编程很有用:https://en.cppreference.com/w/cpp/thread/hardware_destructive_interference_sizeinlineconstexprstd::size_thardware_destructive_interference_size,inlineconstexprstd::size_thardware_constructive_interference_size尽管我想知道它们的可靠性如何?是否保证以后不会有相同CPU架构内具有其他缓存线大小的新CPU型号?即x64缓存行大小为64字

c++ - bad_alloc 在类 Texture 上调用 new 时

这是有问题的行:Texture*texture=newTexture(...);我在这里收到来自bad_alloc的信息:void*__CRTDECLoperatornew(size_tsize)_THROW1(_STDbad_alloc){//trytoallocatesizebytesvoid*p;while((p=malloc(size))==0)if(_callnewh(size)==0){//reportnomemorystaticconststd::bad_allocnomem;_RAISE(nomem);}return(p);}大小是~28字节大到目前为止,该程序已在32

c++ - 在 C++ 中将矩阵高效分解为方形子矩阵

我通过使用1D数据类型并将其包装到行和列中,在C++中实现了Matrix数据类型。现在,我希望有可能从此时开始创建正方形/分块子矩阵,并且我想在内存中进行。问题是我希望这些子矩阵中的一些可以转移到GPU内存并可以在那里并行处理它们。例如,这对矩阵乘法很有用。由于这些子矩阵在主内存中没有对齐,如果不创建单独的拷贝,将它们作为一个单元复制到设备内存看起来是不可能的?我想让这个直接的GPU子矩阵复制映射到CPU原始矩阵以用于更新和效率目的。我事先不知道确切的分区。有人知道我怎样才能实现它吗?提醒一下,矩阵需要按block划分,而不是按行划分,这在C/C++中相对容易。

C++ 对重载函数的模糊调用

我有以下用于“安全”strncpy()的代码——基本上它的包装器自动为字符串缓冲区采用固定的数组大小,因此您不必做额外的工作来传递它们(而且这种便利性更安全因为您不会不小心输入错误的固定数组缓冲区大小)。inlinevoidMySafeStrncpy(char*strDest,size_tmaxsize,constchar*strSource){if(maxsize){maxsize--;strncpy(strDest,strSource,maxsize);strDest[maxsize]=0;}}inlinevoidMySafeStrncpy(char*strDest,size_tm

c++ - "size_t"作为类型参数,未重现转换警告

我一直在尝试消除一些旧代码中的警告(必须使用MSVC2005,目前使用32位构建),但一直在努力消除size_t至unsignedint转换警告。我们有自己的Array实现一个不断增长的数组的实现templateconstT&at(constIi)const{returnatImpl(i);}方法。当调用为size_ti=10;myArray.at(i);我得到一个conversionfrom'size_t'to'constunsignedint',possiblelossofdata警告。一个工作理论是I理解为unsignedint,这导致编译器强制转换/转换size_t至unsig

c++ - 与 STL vector 对齐分配

我希望我的vector存储对齐(比如16字节边界),所以我将这个分配器作为memalign()的包装器,我想知道这是否是正确的方法分配用于STLvector的对齐内存。templateclassAlignedAllocator{public:...pointerallocate(size_typesize,const_pointer*hint=0){return(pointer)memalign(Alignment,size*sizeof(T));};voiddeallocate(pointerp,size_typesize){free(p);};...}如果没有,是否有适用于STL容