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