题目内容 (请给出正确答案)
[主观题]

借助CPU硬件提供的机制,Linux提供了内存越界保护。C语言程序中越界访问数组,也就是说访问超出了数组元素个数,除非这个越界导致越界后的地址值使得访问违背了PTE中的权限限制,否则,访问照样进行,系统不给出任何提示。

提问人:网友tszcgf 发布时间:2022-01-07
参考答案
  抱歉!暂无答案,正在努力更新中……
如搜索结果不匹配,请 联系老师 获取答案
更多“借助CPU硬件提供的机制,Linux提供了内存越界保护。C语…”相关的问题
第1题
数组下标访问超出索引范围时抛出数组越界异常。
点击查看答案
第2题
下面抛出异常语句正确的是()。

A、throw new ArrayIndexOutOfBoundsException("数组访问下标越界啦");

B、throws new ArrayIndexOutOfBoundsException("数组访问下标越界啦");

C、throw ArrayIndexOutOfBoundsException;

D、throws ArrayIndexOutOfBoundsException;

点击查看答案
第3题
下标越界指的是数组下标超过了初始定义时的大小,会导致对数组元素的访问出现在数组的范围之外。()
点击查看答案
第4题
举例说明什么是数组越界?为什么说数组越界是常常是C语言有关数组程序设计中的最大隐患?
点击查看答案
第5题
下面哪一种异常是数组越界访问时产生的异常?

A.RuntimeException

B.NullPointerException

C.IndexOutOfBoundsException

D.ArrayIndexOutOfBoundsException

点击查看答案
第6题
通常所说的"存储保护"的基本含义是____。

A.防止程序被人偷看;

B.防止程序间相互越界访问;

C.防止存储器硬件受损;

D.防止程序在内存丢失;

点击查看答案
第7题
阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】 C++语言本身不提供对数组

阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。

【说明】

C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在程序6中定义了相应的类模板,使得对厂任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息。

include<iostream.h>

template <class T> class Array;

template <class T> class ArrayBody {

friend (1)

T* tpBody;

int iRows, iColumns, iCurrentRow;

ArrayBody (int iRsz, int iCsz) {

tpBody =(2)

iRows = iRsz; iColumns =iCsz; iCurrentRow =-1;

}

public:

T& operator[] (int j) {

bool row_error, column_error;

row_error=column_error=false;

try{

if (iCurrentRow < 0 || iCurrentRow >=iRows)

row_error=true;

if (j < 0 || j >=iColumns)

column_error=true;

if (row_error==true || column_error == true)

(3)

}

catch (char) {

if (row_error==true)

cerr << "行下标越界[" << iCurrentRow << "] ";

if (column_error== true )

cerr << "列下标越界[" <<j << "]";

cout << "\n";

}

return tpBody[iCurrentRow * iColumns +j];

};

~ArrayBody () { delete[] tpBody; }

};

template <class T> class Array {

ArrayBody<T> tBody;

public:

ArrayBody<T> & operator[] (int i) {

(4)

return tBody;

}

Array (int iRsz, int iCsz) :(5) {}

};

void main()

{ Array<int>a1(10,20);

Array<double>a2(3,5);

int b1;

double b2;

b1=a1[-5][10]; //有越界提示:行下标越界[-5]

b1=a1[10][15]; //有越界提示:行下标越界[10]

b1=a1[1][4]; //没有越界提示

b2=a2[2][6]; //有越界提示:列下标越界[6]

b2=s2[10][20]; //有越界提示:行下标越界[10]列下标越界[20]

b2=a2[1][4]; //没有越界提示

}

点击查看答案
第8题
研究下面的Java代码:publicclasstestException{publicstaticvoidmain(Stringargs[]){inta[]={0,1,2,3,4};intsum=0;try{for(inti=1;i<6;i++)sum=sum+a[i];System.out.println("sum="+sum);}catch(ArrayIndexOutOfBoundsException){System.out.println("数组越界");}finally{System.out.println("程序结束");}}}输出结果将是()。

A.10数组越界程序结束

B.10程序结束

C.数组越界程序结束

D.程序结束

点击查看答案
第9题
阅读下列说明和C++程序,将应填入(n)处的字句写在对应栏内。【程序1说明】 程序1中定义了数组的类模

阅读下列说明和C++程序,将应填入(n)处的字句写在对应栏内。

【程序1说明】

程序1中定义了数组的类模板,该模板使得对于任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息(C++语言本身不提供对下标越界的判断)。

【程序1】

include < iostream. h >

template < class T > class Array2D;

template < class T > class Array2DBody {

friend (1);

T * tempBody;

int iRows, iColumns, iCurrentRow;

Array2DBody(int Rows,int Cols) {

tempBody =(2);

iRows = Rows;

iColumns = Cols;

iCurrentRow = -1;

}

public:

T& operator[ ] (int j){

bool row_ error, column_ error;

row_ error = column_ error = false;

try {

if (iCurrentRow < 0||iCurrentRow > = iRows)

row_ error = true;

if(j < 0||j > = iColumns)

column_error = true;

if(row_error = = true [ [ column_ error = = true)

(3);

}

catch(char) {

if (row_error = = true)

cerr < < "行下标越界"[" < < iCurrentRow < < "]";

if(colmnn_error = = true)

cerr< <"列下标越界[" < <j< <"]";

cout < < "\n";

}

return tempBody[ iCurrentRow * iColumns + j ];

}

~ Array2 DBody () { delete [ ] tempBody; } }; template < class T > class Array2D {

Array2DBody < T > tBody;

public:

Array2DBody < T > & operalor[ ] (int i) {

tBody, iCurreutRow = i;

(4);

Array2D(int Rows,int Cols): (5) {} };

void main()

{

Array2D <int> al (10,20 );

Array2D <double> a2(3,5);

int bl;

double b2;

b1=a1[-5][10];//有越界提示:行下标越界[-5]

b1=a1[10][15];//有越界提示:行下标越界[10]

b1=a1[1][4];//没有越界提示

b2=a2[2][6];//有越界提示:列下标越界[6]

b2=a2[10][20];//有越界提示:行下标越界[10]列下标越界[20]

b2=a2[1][4];//没有越界提示

}

点击查看答案
第10题
以下程序执行的结果是什么?()int[]myArray=newint[3];try{for(inti=0;i<=myArray.length;i++){myArray[i]=i*3;System.out.println("myArray数组的第"+i+"个元素的值是:"+myArray[i]);}}catch(ArrayIndexOurOfBoubsExceptione){System.out.println("数组下标越界");}

A.程序执行,屏幕上显示“数组下标越界”

B.程序出现异常,屏幕上提示出现数组下标越界异常

C.程序正常执行结束,屏幕上显示数组中每个元素的值

D.程序编译出错

点击查看答案
账号:
你好,尊敬的用户
复制账号
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
欢迎分享答案

为鼓励登录用户提交答案,简答题每个月将会抽取一批参与作答的用户给予奖励,具体奖励活动请关注官方微信公众号:简答题

简答题官方微信公众号

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
简答题
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反简答题购买须知被冻结。您可在“简答题”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
简答题
点击打开微信