您好,登錄后才能下訂單哦!
問題分析:
這種情況是指:訪問了你不應(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
輸出結(jié)果顯示,在該程序的第15行,進(jìn)行了非法的寫操作;在第16行,進(jìn)行了非法讀操作。準(zhǔn)確地發(fā)現(xiàn)了上述問題。
免責(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)容。