如果内存申请成功,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)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)