草庐IT

c++ - 流式加载和非 USWC 内存

我刚读了这篇相当有趣的文章,CopyingAcceleratedVideoDecodeFrameBuffers.他们解释了如何使用流式加载尽可能快地从USWC内存中进行复制。我的问题是为什么这种技术不能同时加速来自非USWC内存的正常拷贝?流式加载会一次读取整个缓存行,而不是一次只加载16个字节的常规加载。我错过了什么?从填充缓冲区复制到将写入缓存的“缓存缓冲区”不会有太多开销,不是吗? 最佳答案 来自http://software.intel.com/en-us/articles/increasing-memory-through

c++ - 为什么 memcpy 无法复制到简单对象的本地数组成员?

使用C数组作为函数参数的经典memcpy陷阱。正如下面所指出的,我的代码中有一个错误,但错误代码在本地上下文中有效!我刚刚在移植工作中遇到了这种奇怪的行为,我正在使用对象模拟Macintosh图片操作码播放。我的DrawString对象在播放时绘制垃圾,因为它显然无法复制字符串参数。以下是我编写的测试用例-请注意手动复制循环如何工作但memcpy失败。在VisualStudio调试器中进行跟踪显示memcpy用垃圾覆盖目标。两个本地Str255数组上的Memcpy工作正常。当其中一个是堆栈上某个对象的成员时,它会失败(在其他测试中,当对象在堆上时它也会失败)。以下示例代码显示了在ope

C++ memcpy 从 c_str 到 char*

我已经做了一些基本的阅读,从我收集到的内容来看,.c_str()总是有一个空终止符。我有一个相当简单的C++程序:intmain(intargc,char**argv){std::stringfrom="hello";charto[20];memcpy(to,from.c_str(),strlen(from.c_str())+1);std::coutmemcpy是否会确保我将一个以null结尾的字符串复制到我的变量中(前提是我的字符串长度较短)? 最佳答案 您应该使用std::string来复制字符串。但是,如果你想那样做,你应该使

c++ - 如何将一个 vector block 复制到另一个

我用数组来存储数据,但我用vector代替了,所以我想用C++运算符替换所有的C运算符。我用memcpy复制了一个内存块for(i=0;i它也适用于vector,我只想知道c++中是否有等效的函数?我尝试了拷贝:std::copy(tmp.data_[cols_*i],tmp.data_[cols_*i+rows],a.data_[cols_*(2*i+1)]);但我收到以下错误:error:invaliduseofmemberfunction(didyouforgetthe‘()’?)例如:我有一个2xnxn大小的数组,我正在使用for循环来创建一个nxn数组。例如我有1234567

c++ - 理解 memcpy

inta=10;int*pA=&a;longlongb=200;longlong*pB=&b;memcpy(pB,pA,4);memcpy(pB+1,pA,4);cout我正在用memcpy做一些测试来自学内存是如何工作的。我想做的是使b=为“1010”。我可以将值从a复制到b,但随后我尝试将内存偏移1个字节并写入另一个10,但它不起作用,它只输出“10”。我需要做什么才能获得1010的值? 最佳答案 目前您的代码存在一些问题:您复制了4个字节,但目标是int类型。由于不能保证int是任何特定大小,因此在执行那种memcpy之前,您

c# - 在从 C++ 转换为 C# 的代码中,我应该使用什么来代替 memcpy?

有问题的行在这里:memcpy(v[0],b_y1[0],160U*sizeof(double));其中v和b_y1区域双数组(double[])。这条线到底在做什么?它是通过将MatLab转换为C++到C#生成的。如果需要,我可以提供下面的完整功能。 最佳答案 有很多方法可以做到这一点。如果您选择并使用memcpy,请导入DLL。但是你也可以使用:Buffer.BlockCopyCopiesaspecifiednumberofbytesfromasourcearraystartingataparticularoffsettoade

c++ - 在赋值运算符函数中,数组是否隐式为 memcpy

好的。我们知道下面的代码无法编译。charsource[1024];chardest[1024];//Fail.Usememcpy(dest,source,sizeof(source));instead.dest=source;但是,下面的代码可以正确编译和运行。classA{chardata[1024];};Asource;Bdest;dest=source;我想知道,在运算符赋值函数中,数组是否会隐式memcpy?以下是完整的测试代码。#include#includeclassA{public:chardata[1024];};intmain(){{Asource;Adest;//

c++ - 我怎样才能将原始数组的 memcpy 等效于 std::vector?

我有一个类(除其他外)有一个指向unsignedchar的指针,该指针被删除并重新分配以存储来自另一个数组的一些数据。这是用一个函数完成的classMyClass{private:unsignedchar*m_Buffer;intm_BufferSize;public:boolSetBuffer(intiSize,constunsignedchar*pArray);};boolMyClass::SetBuffer(intiSize,constunsignedchar*pArray){boolbOK=false;if(pArray!=NULL&&iSize>0){delete[]m_Bu

ios - xcode 7.3.1,出现错误 memcpy no member in namespace

尝试为iOS编译一些C/C++代码时。得到Nomembernamed'memcpy'innamespace'std::__1';didyoumean'wmemcpy'?尝试了编译器设置但没有成功。这个在工具链的内存文件里。 最佳答案 我需要添加#include希望对你有帮助 关于ios-xcode7.3.1,出现错误memcpynomemberinnamespace,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

【C语言】memcpy memmove memset memcmp 四大内存操作函数(详解+用法+模拟实现)

头文件中常用内存操作函数共有四大,学习完本篇文章,各种类型数组的常见处理轻松拿下。文章目录零、前言一、memcpy内存拷贝函数my_memcpy二、memmove内存移动函数my_memmove三、memset内存赋值函数my_memset四、memcmp内存比较函数my_memcmp零、前言对字符串(字符数组)的操作函数有很多,但是我们想要操作整型数组等呢:这就需要内存操作函数了,memory在计算机科学中是内存的意思,这也是四大内存操作函数都有mem头的原因。与void*类型指针重要的知识:void*类型指针可以指向任何类型的数据,但是void*类型指针无法访问地址数据。这是因为指针压根就