请教NEW的使用问题!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 461|回复: 3

请教NEW的使用问题!

[复制链接]
发表于 2022-6-17 08:59 | 显示全部楼层 |阅读模式
1、int (*c)[10]=new int[1][10];
  Serial.println(sizeof(*c));Serial.printf("%#x\n", c);
编译没有问题 显示
40
0x3ffef084
2、赋值:单个赋值(*c)[0]=1234567890;(*c)[1]=2;(*c)[2]=3;(*c)[3]=4;(*c)[4]=5;(*c)[5]=6;(*c)[6]=7;(*c)[7]=8;(*c)[8]=9;(*c)[9]=0;
  (*c)[10]=1;(*c)[11]=2;(*c)[12]=3;(*c)[13]=4;(*c)[14]=5;(*c)[15]=6;(*c)[16]=7;(*c)[17]=8;(*c)[18]=9;(*c)[19]=1111111111;
Serial.println((*c)[0]);Serial.println((*c)[19]);
  注意:赋值了20个成员,申请的是10个。
同样编译没有问题 显示 正确!
1234567890
1111111111

为什么?
3、用for循环赋值 for(int i=0;i<20;i++) (*c)[i]=1111111111+i;
编译没有问题,运行时频繁重启,为什么单个赋值没有问题,而用for循环赋值就出现了频繁重启的问题。

问题总结:1:为什么申请了10个成员40个字节的内存,但可以为20个成员赋值,用了80字节的内存。
2:为什么单个赋值的时候没有问题,而用FOR循环就出现频繁重启的问题。
谢谢各位回答。

发表于 2022-6-17 19:16 | 显示全部楼层
关于2,估计是看门狗复位了,串口调试信息应该能看出来
 楼主| 发表于 2022-6-18 09:55 | 显示全部楼层
明白是怎么回事了,申请多少用多少,多用的不受保护!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 08:29 , Processed in 0.076241 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表