草庐IT

c - bzero() & bcopy() 与 memset() & memcpy()

有什么理由使用非标准的bzero()和bcopy()而不是memset()和在Linux环境中使用memcpy()?我听到很多人说它们更适合Linux编译器,但没有看到比标准函数有任何优势。它们是否比标准的更优化,或者它们是否有任何行为的特殊性,它们是首选的? 最佳答案 虽然bzero和bcopy函数不是ISOC(我假设您在将它们称为非标准时所说的实际标准),但它们是一个POSIX标准的东西,尽管它们早于ISO和POSIX。并注意使用"is"这个词-这些函数在POSIX.1-2001中已弃用,并在POSIX.1-2008中最终删除,

c++ - Linux 上的 memcpy 性能不佳

我们最近购买了一些新服务器,但memcpy性能不佳。与我们的笔记本电脑相比,服务器上的memcpy性能要慢3倍。服务器规范机箱和主板:SUPERMICRO1027GR-TRFCPU:2xIntelXeonE5-2680@2.70Ghz内存:8x16GBDDR31600MHz编辑:我也在另一台规范稍高的服务器上进行测试,看到的结果与上述服务器相同服务器2规范机箱和主板:SUPERMICRO10227GR-TRFTCPU:2xIntelXeonE5-2650v2@2.6Ghz内存:8x16GBDDR31866MHz笔记本电脑规范机箱:联想W530CPU:1x英特尔酷睿i7i7-3720QM

c++ - Linux 上的 memcpy 性能不佳

我们最近购买了一些新服务器,但memcpy性能不佳。与我们的笔记本电脑相比,服务器上的memcpy性能要慢3倍。服务器规范机箱和主板:SUPERMICRO1027GR-TRFCPU:2xIntelXeonE5-2680@2.70Ghz内存:8x16GBDDR31600MHz编辑:我也在另一台规范稍高的服务器上进行测试,看到的结果与上述服务器相同服务器2规范机箱和主板:SUPERMICRO10227GR-TRFTCPU:2xIntelXeonE5-2650v2@2.6Ghz内存:8x16GBDDR31866MHz笔记本电脑规范机箱:联想W530CPU:1x英特尔酷睿i7i7-3720QM

c++ - 为什么 memmove 比 memcpy 快?

我正在调查一个应用程序中的性能热点,该应用程序花费了50%它在memmove(3)中的时间。应用程序插入数百万个4字节整数进入排序数组,并使用memmove将数据“向右”移动以便为插入的值腾出空间。我的期望是复制内存非常快,我很惊讶这么多时间都花在了memmove上。但后来我想到了memmove很慢,因为它正在移动重叠区域,必须实现在一个紧密的循环中,而不是复制大内存页。我写了一个小微基准测试,以确定两者之间是否存在性能差异memcpy和memmove,期待memcpy胜出。我在两台机器(核心i5、核心i7)上运行了我的基准测试,发现memmove是实际上比memcpy快,在较旧的核心

c++ - 为什么 memmove 比 memcpy 快?

我正在调查一个应用程序中的性能热点,该应用程序花费了50%它在memmove(3)中的时间。应用程序插入数百万个4字节整数进入排序数组,并使用memmove将数据“向右”移动以便为插入的值腾出空间。我的期望是复制内存非常快,我很惊讶这么多时间都花在了memmove上。但后来我想到了memmove很慢,因为它正在移动重叠区域,必须实现在一个紧密的循环中,而不是复制大内存页。我写了一个小微基准测试,以确定两者之间是否存在性能差异memcpy和memmove,期待memcpy胜出。我在两台机器(核心i5、核心i7)上运行了我的基准测试,发现memmove是实际上比memcpy快,在较旧的核心

c++ - 我可以调用 memcpy() 和 memmove() 并将 "number of bytes"设置为零吗?

当我实际上没有东西可以移动/复制时,我是否需要处理将memmove()/memcpy()作为边缘情况的情况intnumberOfBytes=...if(numberOfBytes!=0){memmove(dest,source,numberOfBytes);}或者我应该直接调用函数而不检查intnumberOfBytes=...memmove(dest,source,numberOfBytes);是否需要检查前一个片段? 最佳答案 来自C99标准(7.21.1/2):Whereanargumentdeclaredassize_tns

c++ - 我可以调用 memcpy() 和 memmove() 并将 "number of bytes"设置为零吗?

当我实际上没有东西可以移动/复制时,我是否需要处理将memmove()/memcpy()作为边缘情况的情况intnumberOfBytes=...if(numberOfBytes!=0){memmove(dest,source,numberOfBytes);}或者我应该直接调用函数而不检查intnumberOfBytes=...memmove(dest,source,numberOfBytes);是否需要检查前一个片段? 最佳答案 来自C99标准(7.21.1/2):Whereanargumentdeclaredassize_tns

c++ - 就性能而言,使用 std::memcpy() 或 std::copy() 更好吗?

用memcpy更好吗?如下图还是用std::copy()比较好在性能方面?为什么?char*bits=NULL;...bits=new(std::nothrow)char[((int*)copyMe->bits)[0]];if(bits==NULL){coutbits,((int*)copyMe->bits)[0]); 最佳答案 我将在这里违背std::copy的普遍智慧会有轻微的、几乎察觉不到的性能损失。我刚刚做了一个测试,发现这是不正确的:我确实注意到了性能差异。然而,获胜者是std::copy.我写了一个C++SHA-2实现。

c++ - 就性能而言,使用 std::memcpy() 或 std::copy() 更好吗?

用memcpy更好吗?如下图还是用std::copy()比较好在性能方面?为什么?char*bits=NULL;...bits=new(std::nothrow)char[((int*)copyMe->bits)[0]];if(bits==NULL){coutbits,((int*)copyMe->bits)[0]); 最佳答案 我将在这里违背std::copy的普遍智慧会有轻微的、几乎察觉不到的性能损失。我刚刚做了一个测试,发现这是不正确的:我确实注意到了性能差异。然而,获胜者是std::copy.我写了一个C++SHA-2实现。

memcpy函数实现缓冲区溢出漏洞

本次实验需要用到的环境和工具要是需要的可以留言评论,我就不一一介绍了,估计也没啥人看。主要是太多了,我不想打字。学习这个漏洞我们要去学习漏洞的理论知识。在汇编程序的执行过程中,如果需要调用某个函数一般是call函数地址,而call这条指令在执行的时候会把函数返回地址(执行完函数后要执行的下一条指令的地址)压栈,然后在栈中的伸展方向是从高地址向低地址延申的。这里可能不是很好理解,我画个图hhhh,比如我在执行call指令时压栈的返回地址的在栈中的序号是10000,然后我调用函数的变量也需要压榨,我申请的一个空间为10的数组,所以我就会申请9990到10000这10个格子用来放参数,然后在存参数的