申请空间后,默认值为多少

CHZiroy 2012-08-08 04:21:37
今天在调试一个程序时,遇到类似问题,下面是一个同样性质的一个小问题

typedef unsigned char byte;
,
,
,
byte *a = new byte[10];
a[0] = 'a';
printf("%c\n",a[0]);
printf("%c\n",a[1]);

这时a[1] - a[9]这些没人为赋值的,,它等于多少

...全文
222 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏天__ 2012-08-10
  • 打赏
  • 举报
回复
没啥意义,一般申请完事之后,都memset一下
markma 2012-08-10
  • 打赏
  • 举报
回复
没啥意义,一般申请完事之后,都memset一下
PIE 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

申请空间,默认值是十六进制的CDCDCDCD,换算成十进制是3452816845
[/Quote]
xiaohuh421 2012-08-08
  • 打赏
  • 举报
回复
你不知道系统分配后是多少,但你可以分配后自己指定嘛.
比如:
BYTE *buf = new BYTE[0x100];
memset(buf, 0xFF ,0x100);//这里就可以把分配的空间全部置成0xFF了,
当然要从内容看有哪些buf被写到哪里了,这是很危险的, 因为你不能保证你的数据中没有0xFF,万一有了,悲剧就会发生了.
最好还是使用一个指针,或者是索引变量要记录buf被访问到哪里了.
种菜的 2012-08-08
  • 打赏
  • 举报
回复
自己记录赋值到多少字节了,或者用一个指针指向下次将要被赋值处,都行。
baichi4141 2012-08-08
  • 打赏
  • 举报
回复
上面打错一个字母,VS下的确是0xCD
但我再说一次,这种东西毫无意义

为啥?因为这是DEBUG模式下,编译器方便你调试所以额外加上的东西
换RELEASE模式,就什么都没有了
ylongwu 2012-08-08
  • 打赏
  • 举报
回复
每个Byte里面都是CD,(十进制205)除了被你被你赋值的那一位是"a"
ylongwu 2012-08-08
  • 打赏
  • 举报
回复
申请空间,默认值是十六进制的CDCDCDCD,换算成十进制是3452816845
baichi4141 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
现在我在程序中,申请了一段空间,向其中赋值,而可能只是向其中一部分长度空间赋值而已,想要知道我赋值到了哪里,,有什么法子吗
[/Quote]
自己设个变量,赋值时记下来赋值到了哪里

取巧的方法的确有,例如如果你要赋值的数据中不可能有零值(最常见的就是字符串),就可以申请之后立刻全部置零,这样就可以通过查找零来判断赋值到了什么位置
但这只是特定条件下的取巧,本质上,编译器不会帮你多做任何事,那是在浪费资源降低效率,并非普遍需要而仅仅是你需要的功能,必须你自己去实现
IVERS0N 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

现在我在程序中,申请了一段空间,向其中赋值,而可能只是向其中一部分长度空间赋值而已,想要知道我赋值到了哪里,,有什么法子吗

引用楼主 的回复:
今天在调试一个程序时,遇到类似问题,下面是一个同样性质的一个小问题

typedef unsigned char byte;
,
,
,
byte *a = new byte[10];
a[0] = 'a';
printf("%……
[/Quote]

用另一个指针指向空间 用一个变量记着这个指针移动了多少字节
CHZiroy 2012-08-08
  • 打赏
  • 举报
回复
现在我在程序中,申请了一段空间,向其中赋值,而可能只是向其中一部分长度空间赋值而已,想要知道我赋值到了哪里,,有什么法子吗

[Quote=引用楼主 的回复:]
今天在调试一个程序时,遇到类似问题,下面是一个同样性质的一个小问题

typedef unsigned char byte;
,
,
,
byte *a = new byte[10];
a[0] = 'a';
printf("%c\n",a[0]);
printf("%c\n",a[1]);

这时a[1] - a[9]这些没人为赋值的,,它等于多少
[/Quote]
baichi4141 2012-08-08
  • 打赏
  • 举报
回复
申请内存时不修改内存当前值
上次使用时该内存的数据是怎么样的,刚申请时就是怎么样的
不仅申请,你定义变量却没有初始化,也是这么回事,内存中依然是上次压栈的数据

VS上的小程序的话,一般是0xCC吧
不过这种东西没意义,除非你是研究VS这类集成开发环境本身的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧