摘要: 精彩的一個(gè)問題是系統(tǒng)對(duì)內(nèi)存空間申請(qǐng)的分配機(jī)制:
typedef struct{
Triple *data;
int mu,nu,tu;
int rpos[MAXRC];
}TSMatrix;//這是我寫的對(duì)稀疏矩陣的第一種定義;
Data用堆棧申請(qǐng)方式向系統(tǒng)申請(qǐng)空間
初看起來(lái)沒有問題:貌似在許多的習(xí)題上見到這樣的寫法;
而且以前也沒有發(fā)現(xiàn)這種寫法會(huì)有錯(cuò)誤;
以前的做法基本上是申請(qǐng)一塊空間然后存放一個(gè)結(jié)構(gòu);但是很少有申請(qǐng)一片內(nèi)存然后對(duì)這塊內(nèi)存按序號(hào)進(jìn)行訪問;
雖然我的層序在vista系統(tǒng)下測(cè)試通過,但是我還是轉(zhuǎn)移到xp下測(cè)試一便,結(jié)果系統(tǒng)提示錯(cuò)誤,肯定是內(nèi)存分配的問題了,我將稀疏矩陣的定義改了一下:
typedef struct{
Triple data[MAXSIZE+1];//在使用過程有效位置也是從下標(biāo)1開始
int mu,nu,tu;//行,列,非零元個(gè)數(shù)
閱讀全文