首页 > 编程语言 >C++实现memcpy和memmove(含调试程序)

C++实现memcpy和memmove(含调试程序)

时间:2024-02-07 13:11:21浏览次数:34  
标签:src -- void C++ char dest num 调试程序 memcpy

#include <iostream>
#include <string>
using std::cout;
using std::endl;

void* mymencpy(void* dest, void* src, size_t num) {
	char* d = (char*)dest;
	char* s = (char*)src;
	while (num--) {
		*(d++) = *(s++);
	}
	return d;
}

void* mymenmove(void* dest, void* src, size_t num) {
	char* d = (char*)dest;
	char* s = (char*)src;
	if (s > d) {
		while (num--) {
			*(d++) = *(s++);
		}
	}
	else {
		d += num - 1;
		s += num - 1;
		while (num--)
		{
			*(d--) = *(s--);
		}
	}
	return d;
}

int main() {
	int a[] = { 1,2,3,4,5 };
	int b[5];
	//mymencpy(a+1, a, 16);
	mymenmove(a + 1, a, 16);
	for (auto s : a) {
		cout << s;
	}
	cout << endl;
}

参考博客:memmove 和 memcpy的区别以及处理内存重叠问题

标签:src,--,void,C++,char,dest,num,调试程序,memcpy
From: https://www.cnblogs.com/fly-smart/p/18010839

相关文章

  • C++编程练习||1.类模板2.整数集合类3.复数集合类,模板结合
    1.类模板 类模板的作用  使用类模板使用户可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值,能取任意类型(包括基本类型的和用户自定义类型)。  类模板的声明  类模板template<模板参数表>class类名{类成员声明};  ......
  • C++类开发第二篇(浅析构造函数和析构函数)
    class_2构造函数构造函数是一种特殊的成员函数,用于创建和初始化类的对象。它的名称与类的名称相同,没有返回值,也不需要显式调用。在C++中,每个类都必须至少有一个构造函数。当我们创建一个类的对象时,编译器会自动调用构造函数来初始化该对象的成员变量。构造函数可以执行一些操作......
  • c++ function
    可调用对象函数函数指针函数类lamda表达式bind对象函数类重载了函数调用运算符()的类的对象,称为函数对象。classcallable{public:voidoperator()(intx)const{cout<<"callable::operator():"<<x<<endl;}};intmain(){calla......
  • C++编程练习||1.排序函数模板2.函数模板3.重载printArray函数模板
    1.排序函数模板已知主函数如程序后缀代码所示,请为其编写适当的模板函数,使主函数的bubbleSort函数可以对一个整型数组和一个浮点数数组进行输入、排序、输出操作。#include<iostream>#include<iomanip>usingnamespacestd;template<typenameT>voidbubbleSort(T*arr,......
  • c++命名空间
    1.命名空间定义注:命名空间只能在全局变量中定义namespacemystd{intx,y;intmax(inta,intb){returnstd::max(a,b);}}intmain(){inta=10,b=4;std::cout<<mystd::max(a,b);}2.命名空间可以嵌套namespacemystd{......
  • DevC++ 支持c++11
    DevC++支持c11报错解决点击工具,选择编译选项勾选编译时加入一下命令-std=c++11......
  • C++(learning)
     模板宏例子,用于创建get()、set()#defineWELD_ATTACH_INFO_SETGET(T,FUN,VAR)\inlineTget##FUN()const{returnVAR;}\inlinevoidset##FUN(Tt){VAR=t;}WELD_THRESHOLD_SETGET(int,InitId,init_id_) 方便引用#ifndefUSE_PLANDATA#defineUSE_PL......
  • Windows下如何使用 Sublime Text 4 配置 C/C++ 环境(使用LSP-clangd)
    1软件安装1.1SublimeText4安装及PackageControl安装略,请自行百度/必应/谷歌。1.2Clang环境安装1.2.1Clang下载在LLVMMinGW下载最新版Clang编译器,此处应根据个人电脑系统及版本选择,本文选择llvm-mingw-20231128-ucrt-x86_64.zip,后续文件名将以此为例。各版本......
  • C++编程练习||实现分数类Fraction1、实现分数的+,-,*,/ 2、逻辑运算==、!=、<、<=、>、>
    题目:实现分数类Fraction  classFraction{   intnumerator,denominator;   public:   ....  };  要求:1、实现分数的+,-,*,/2、逻辑运算==、!=、<、<=、>、>=6种运输符号。3、实现输出<<,输入 >>操作符重载。  样例1输入:   12 ......
  • c++的类开发第一篇
    class_1什么是接口?类就是一种公共接口,公众(public)是使用类的程序,交互系统由类对象组成,而接口由编写类的人提供的方法组成。接口让程序员能够编写与类对象交互的代码,从而让程序能够使用类对象。例如,要计算string对象中包含多少个字符,您无需打开对象,而只需使用string类提供的s......