设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
明明有错的代码,偏偏还能编译运行,迷惑中,请指教! ...
1
2
3
/ 3 页
下一页
返回列表
查看:
1712
|
回复:
28
明明有错的代码,偏偏还能编译运行,迷惑中,请指教!
[复制链接]
randypig
randypig
当前离线
积分
22
IP卡
狗仔卡
发表于 2005-1-19 16:34:28
|
显示全部楼层
|
阅读模式
#include <stdio.h>
#include <stdlib.h>
void test_ary(int ary[]);
int main(){
int intary[10];
test_ary(intary);
exit(EXIT_SUCCESS);
}
void test_ary(int ary[]){
int i;
for(i=0; i<15 ; ++i){
ary[i]=i;
printf("The num is %d\n",ary[i]); //这个循环有15次,而数组只是10个元素的,
//居然不出现段错误?迷惑中啊!
//我用的是FC2!
}
}
复制代码
:help 请大家帮忙看看,这么不报错?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
osfans
osfans
当前离线
积分
587
IP卡
狗仔卡
发表于 2005-1-19 16:43:21
|
显示全部楼层
数组实际上是指针
回复
支持
反对
使用道具
举报
显身卡
randypig
randypig
当前离线
积分
22
IP卡
狗仔卡
楼主
|
发表于 2005-1-19 16:55:56
|
显示全部楼层
这个知道啊,但是分配数组是只要了10个单元,怎么后面到了15,还是能继续下去呢?应该出现错误才对啊!
回复
支持
反对
使用道具
举报
显身卡
herberteuler
herberteuler
当前离线
积分
1620
IP卡
狗仔卡
发表于 2005-1-19 16:56:34
|
显示全部楼层
只要程序访问的是本进程地址空间内的数据,并且这些数据是可以写的,就不会出段错误。这也是许多“缓冲区溢出”错误的来源。
回复
支持
反对
使用道具
举报
显身卡
jiangbo409
jiangbo409
当前离线
积分
4
IP卡
狗仔卡
发表于 2005-1-19 18:13:28
|
显示全部楼层
C的指针太强大了
回复
支持
反对
使用道具
举报
显身卡
doubleelec
doubleelec
当前离线
积分
773
IP卡
狗仔卡
发表于 2005-1-19 18:21:53
|
显示全部楼层
Post by
osfans
数组实际上是指针
呵呵,论坛中有一个讨论指针与数组的贴子,应该去看看,你这么认为是很危险的。
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2005-1-19 18:56:45
|
显示全部楼层
Post by
jiangbo409
C的指针太强大了
这和C语言指针的强大有什么关系,错误的程序也不会因为使用了强大的指针就变成正确的啦。
还是自己小心处理数组下标越界吧。
回复
支持
反对
使用道具
举报
显身卡
mikkoyue
mikkoyue
当前离线
积分
385
IP卡
狗仔卡
发表于 2005-1-19 19:08:05
|
显示全部楼层
把你的自定义函数改一下,你这种写法在逻辑上说来是错误的,危险性在高。
int test_ary(int ary[], int size);
void test_ary(int ary[] int size) {
int i;
for(i=0; i<size ; ++i) { // 这样就行了
ary[i]=i;
printf("The num is %d\n",ary[i]);
}
}
复制代码
回复
支持
反对
使用道具
举报
显身卡
randypig
randypig
当前离线
积分
22
IP卡
狗仔卡
楼主
|
发表于 2005-1-19 21:43:13
|
显示全部楼层
楼上的朋友,不好意思,写上论坛的时候写错了。
但是我的遇到的问题是,数组这个错误在linux下居然能执行,而且没有报错,很不解!
试着在windows中运行,也能运行到15,不过会报内存错误!
回复
支持
反对
使用道具
举报
显身卡
nuclearweapon
nuclearweapon
当前离线
积分
330
IP卡
狗仔卡
发表于 2005-1-19 22:39:23
|
显示全部楼层
编译的问题~~c的编译器就是这样设计的为了简便~。
至于报错是操作系统的如何管理内存的问题~
回复
支持
反对
使用道具
举报
显身卡
下一页 »
1
2
3
/ 3 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表