溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

c內(nèi)存讀寫越界

發(fā)布時(shí)間:2020-03-20 10:53:53 來源:網(wǎng)絡(luò) 閱讀:2275 作者:skinglzw 欄目:編程語言

問題分析:

這種情況是指:訪問了你不應(yīng)該/沒有權(quán)限訪問的內(nèi)存地址空間,比如訪問數(shù)組時(shí)越界;對(duì)動(dòng)態(tài)內(nèi)存訪問時(shí)超出了申請(qǐng)的內(nèi)存大小范圍。下面的程序就是一個(gè)典型的數(shù)組越界問題。pt是一個(gè)局部數(shù)組變量,其大小為4,p初始指向pt數(shù)組的起始地址,但在對(duì)p循環(huán)疊加后,p超出了pt數(shù)組的范圍,如果此時(shí)再對(duì)p進(jìn)行寫操作,那么后果將不可預(yù)期。

#include <stdlib.h>

#include <stdio.h>


int main(int argc,char *argv[])

{

int len = 4;

int* pt = (int*)malloc(len*sizeof(int));

int * p=pt;

for(int i=0;i<len;i++)

{

p++;

}

*p=5;

printf("the value of equal:%d",*p);

return 0;

}

gcc -Wall test.c -g -o test

valgrind --tool=memcheck --leak-check=full ./test


c內(nèi)存讀寫越界

輸出結(jié)果顯示,在該程序的第15行,進(jìn)行了非法的寫操作;在第16行,進(jìn)行了非法讀操作。準(zhǔn)確地發(fā)現(xiàn)了上述問題。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI