请教NEW的使用问题!
1、int (*c)=new int;Serial.println(sizeof(*c));Serial.printf("%#x\n", c);
编译没有问题 显示
40
0x3ffef084
2、赋值:单个赋值(*c)=1234567890;(*c)=2;(*c)=3;(*c)=4;(*c)=5;(*c)=6;(*c)=7;(*c)=8;(*c)=9;(*c)=0;
(*c)=1;(*c)=2;(*c)=3;(*c)=4;(*c)=5;(*c)=6;(*c)=7;(*c)=8;(*c)=9;(*c)=1111111111;
Serial.println((*c));Serial.println((*c));
注意:赋值了20个成员,申请的是10个。
同样编译没有问题 显示 正确!
1234567890
1111111111
为什么?
3、用for循环赋值 for(int i=0;i<20;i++) (*c)=1111111111+i;
编译没有问题,运行时频繁重启,为什么单个赋值没有问题,而用for循环赋值就出现了频繁重启的问题。
问题总结:1:为什么申请了10个成员40个字节的内存,但可以为20个成员赋值,用了80字节的内存。
2:为什么单个赋值的时候没有问题,而用FOR循环就出现频繁重启的问题。
谢谢各位回答。
关于2,估计是看门狗复位了,串口调试信息应该能看出来 明白是怎么回事了,申请多少用多少,多用的不受保护!
页:
[1]