草庐IT

aeabi_memcpy

全部标签

c++ - 在什么平台上 memmove 和 memcpy 会有显着的性能差异?

我知道memmove和memcpy的区别在于memmove处理内存重叠情况。我检查了libgcc中的实现并得到了这篇文章[memcpyperformance]来自英特尔网站。在libgcc中,memmove类似于memcpy,都是一个字节一个字节地走,所以即使经过优化,性能应该也差不多。有人测过这个得到这篇文章memcopy,memmove,andSpeedoverSafety.即使我不认为memmove可以比memcpy更快,但至少在Intel平台上应该没有太大区别。那么在什么平台上以及如何,memcpy可以比memmove快得多,如果没有,为什么要提供两个类似的函数而不是仅仅mem

c++ - 我可以使用 memcpy 写入多个相邻的标准布局子对象吗?

免责声明:这是试图深入研究一个更大的问题,因此请不要纠结于该示例在实践中是否有意义。而且,是的,如果您想复制对象,请使用/提供复制构造函数。(但请注意,即使是示例也不会复制整个对象;它会尝试在几个相邻的(Q.2)整数上blit一些内存。)给定一个C++StandardLayoutstruct,我可以使用memcpy一次写入多个(相邻的)子对象?完整示例:(https://ideone.com/1lP2Gdhttps://ideone.com/YXspBk)#include#include#include#include#include#includestructMyStandardLa

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++ - 理解 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*类型指针无法访问地址数据。这是因为指针压根就