對不起,我的英文不好。試圖打印指針的值時發生堆異常
我剛開始在我校最終的項目工作,我在我的代碼遇到一個錯誤......
該計劃是在C和它使一個矩陣襲擊(與起始指針,行和列的NUM )。第一個函數應該製作一個矩陣,放大行和列的數量,並將所有值清零(稍後它將用於不同的配置,但不會這麼做)。後來有一個函數可以打印出矩陣。
當程序獲取到的 「printf」 它打破了.. "Unhandled exception at 0x7789ea27 in image_pross.exe: 0xC0000374: A heap has been corrupted."
下面的代碼:
#include <stdio.h>
#include <stdlib.h>
struct matrix
{
int* ptr;
int row;
int column;
};
matrix ZFMatrix(matrix preMtx,int nColumn,int nRow);
void printMatrix (matrix mtx);
void main(int argc, char* argv[])
{
int matrixAdd[3][3]={{1,1,1},{1,-8,1},{1,1,1}};
matrix mtx;
mtx.ptr=&matrixAdd[0][0];
mtx.row=3;
mtx.column=3;
mtx= ZFMatrix(mtx,2,2);
printMatrix(mtx);
}
matrix ZFMatrix(matrix preMtx,int nColumn,int nRow)
{
matrix newMtx;
newMtx.column=nColumn*2+preMtx.column;
newMtx.row=nRow*2+preMtx.row;
newMtx.ptr= (int*) malloc((newMtx.row)*(newMtx.column));
int i,j,*tmp=newMtx.ptr;
//zero out the matrix
for (i=0; i<newMtx.column;i++)
{
for(j=0;j<newMtx.row;j++)
{
*newMtx.ptr=0;
newMtx.ptr++;
}
}
newMtx.ptr=tmp;
return newMtx;
}
void printMatrix (matrix mtx)
{
int i=0,j=0;
for (;i<mtx.column;i++)
{
for(;j<mtx.row;j++)
{
printf("%d, ", *mtx.ptr);
mtx.ptr++;
}
printf("\n");
}
}
從技術上講,你不打印指針的**值**;您正在打印指針所指向的值:-) – Pointy 2011-03-12 13:26:25
這不是編譯器中斷 - 當您運行程序時,編譯器早已消失。這是你的程序打破 - 或者說,被打破。 – 2011-03-12 13:30:52