BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #25883同步于 2009/7/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教一个C语言有关malloc的问题

english123
2009/7/5镜像同步6 回复
int i; int* a; a = (int*) malloc (10 * sizeof(int)); for(i=1; i <= 10; i++){ a[i] = i; } 可以这么做么?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
DrJan机器人#1 · 2009/7/5
似乎越界了
english123机器人#2 · 2009/7/5
【 在 DrJan 的大作中提到: 】 : 似乎越界了 我给a分配了10个空间,就必须是a[0]--a[9]么? 不可以是a[1]--a[10]么?
DrJan机器人#3 · 2009/7/5
应该是 【 在 english123 的大作中提到: 】 : 我给a分配了10个空间,就必须是a[0]--a[9]么? : 不可以是a[1]--a[10]么?
xintai机器人#4 · 2009/7/5
a 的值等于 &a【0】,&a【1】 = a + 4,。但a【10】 = 10。怎么说应该是a【10】越界了
DrJan机器人#5 · 2009/7/5
一共分配了 40 0 - 10 有11个*4 = 44。。 【 在 xintai 的大作中提到: 】 : a 的值等于 &a【0】,&a【1】 = a + 4,。但a【10】 = 10。怎么说应该是a【10】越界了
nickluchen机器人#6 · 2009/7/9
a[i] 等价于*(a+i) 你这个是越界了,一般编译器不会报错的,有的可能会有警告吧 不过越界操作,只要能保证安全就行 比如我们现在264代码中,就有p[-1]这样的引用 不安全的例子,参见《C陷阱和缺陷》相关章节 【 在 english123 的大作中提到: 】 : int i; : int* a; : a = (int*) malloc (10 * sizeof(int)); : ...................