c++中进行动态内存分配后怎么保存该内存中的数据呢?

c++中进行动态内存分配后怎么保存该内存中的数据呢?,第1张

c语言中动态分配和撤销内存采用malloc和free,c++中采用new和delete,虽然c++兼容c,也可以用malloc和free,但他们是库函数,而new和delete是运算符,执行效率要高,所以建议c++中内存分配用new和delete。

如果内存申请成功,new运算符返回一个指向所申请的内存空间首地址的指针,申请失败则返回NULL(不同编译器处理方法可能不同)。

如 int *p1 = new int

float *p2 = new float(3.14159)//申请内存并初始化

char *p3 = new char[10]//数组

Stu *p4 = new Stu//Stu为已定义的类

delete p1

delete [] p2(释放整个数组空间)

动态申请的内存没有名字,也不知道其地址,但它确实是存在的,通过指针来访问。

如 *p1 = 100这和普通变量一样使用,如果要断电保存,那就要写文件或者数据库了,可以查找相关系统函数。

变量可以存储在内存中的不同地方,这依赖于它们的生存期。在函数外部定义的变量(全局变量或静态外部变量)和在函数内部定义的static变量,其生存期就是程序运行的全过程,这些变量被存储在数据段(datasegment)中。数据段是在内存中为这些变量留出的一段大小固定的空间,它分为两部分,一部分用来存放初始化变量,另一部分用来存放未初始化变量。在函数内部定义的auto变量(没有用关键字static定义的变量)的生存期从程序开始执行其所在的程序块代码时开始,到程序离开该程序块时为止。作为函数参数的变量只在调用该函数期间存在。这些变量被存储在栈(stack)中。栈是内存中的一段空间,开始很小,以后逐渐自动增大,直到达到某个预定义的界限。

建议这样格式化:

sprintf(s, "%02X", val)

如你题中的结果,可以这样写:

char s[32] = {0}

char s2[32]

for(int i=1i<=2i++

{

sprintf(s2, "%02X", cRecvBuff[i])

strcat(s, s2)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9940572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存