青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小星星的天空

O(∩_∩)O 小月亮的fans ^_^

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  16 隨筆 :: 0 文章 :: 61 評論 :: 0 Trackbacks

今天加載一個3ds模型,運行時提示說
Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted.
明明以前都好用了的,納悶得很。
仔細查看了下代碼,發(fā)現(xiàn)了一處錯誤.
請看代碼:
 

//  下面的函數(shù)讀出3ds文件的主要部分
void C3ds::ProcessNextChunk(t3DModel *pModel, tChunk *pPreviousChunk)
{
 t3DObject newObject = {0};     // 用來添加到對象鏈表
 tMaterialInfo newTexture = {0};    // 用來添加到材質(zhì)鏈表
 unsigned int version[10] = {0};     // 保存文件版本                          注意:此處以前為unsigned int version10 = 0;  之所以發(fā)生那個錯誤,原因是
                                                                                                                     這里只聲明了一個變量,下面卻那他的地址當讀取文件的目的地址
                                                                                                                     當讀取字節(jié)數(shù)超過4時,就會引起上面那個錯誤。 

 int buffer[50000] = {0};     // 用來跳過不需要的數(shù)據(jù)
 m_CurrentChunk = new tChunk;    // 為新的塊分配空間  

 //  下面每讀一個新塊,都要判斷一下塊的ID,如果該塊是需要的讀入的,則繼續(xù)進行
 //  如果是不需要讀入的塊,則略過

 // 繼續(xù)讀入子塊,直到達到預定的長度
 while (pPreviousChunk->bytesRead < pPreviousChunk->length)
 {
  // 讀入下一個塊
  ReadChunk(m_CurrentChunk);

  // 判斷塊的ID號
  switch (m_CurrentChunk->ID)
  {
  case VERSION:       // 文件版本號
   
   // 在該塊中有一個無符號短整型數(shù)保存了文件的版本
   
   // 讀入文件的版本號,并將字節(jié)數(shù)添加到bytesRead變量中
   m_CurrentChunk->bytesRead += fread(&version, 1, m_CurrentChunk->length - m_CurrentChunk->bytesRead, m_FilePointer);

   // 如果文件版本號大于3,給出一個警告信息
   if (version[0] > 0x03)      // 注意:此處原為version0 > 0x03
    MessageBox(NULL, "This 3DS file is over version 3 so it may load incorrectly", "Warning", MB_OK);
   break;

  case OBJECTINFO:      // 網(wǎng)格版本信息
   
   // 讀入下一個塊
   ReadChunk(m_TempChunk);

   // 獲得網(wǎng)格的版本號
   m_TempChunk->bytesRead += fread(&version, 1, m_TempChunk->length - m_TempChunk->bytesRead, m_FilePointer);

   // 增加讀入的字節(jié)數(shù)
   m_CurrentChunk->bytesRead += m_TempChunk->bytesRead;

   // 進入下一個塊
   ProcessNextChunk(pModel, m_CurrentChunk);
   break;

  case MATERIAL:       // 材質(zhì)信息

   // 材質(zhì)的數(shù)目遞增
   pModel->numOfMaterials++;

   // 在紋理鏈表中添加一個空白紋理結(jié)構(gòu)
   pModel->pMaterials.push_back(newTexture);

   // 進入材質(zhì)裝入函數(shù)
   ProcessNextMaterialChunk(pModel, m_CurrentChunk);
   break;

  case OBJECT:       // 對象的名稱
    
   // 該塊是對象信息塊的頭部,保存了對象了名稱

   // 對象數(shù)遞增
   pModel->numOfObjects++;
  
   // 添加一個新的tObject節(jié)點到對象鏈表中
   pModel->pObject.push_back(newObject);
   
   // 初始化對象和它的所有數(shù)據(jù)成員
   memset(&(pModel->pObject[pModel->numOfObjects - 1]), 0, sizeof(t3DObject));

   // 獲得并保存對象的名稱,然后增加讀入的字節(jié)數(shù)
   m_CurrentChunk->bytesRead += GetString(pModel->pObject[pModel->numOfObjects - 1].strName);
   
   // 進入其余的對象信息的讀入
   ProcessNextObjectChunk(pModel, &(pModel->pObject[pModel->numOfObjects - 1]), m_CurrentChunk);
   break;

  case EDITKEYFRAME:

   // 跳過關(guān)鍵幀塊的讀入,增加需要讀入的字節(jié)數(shù)
   m_CurrentChunk->bytesRead += fread(buffer, 1, m_CurrentChunk->length - m_CurrentChunk->bytesRead, m_FilePointer);
   break;

  default:
   
   //  跳過所有忽略的塊的內(nèi)容的讀入,增加需要讀入的字節(jié)數(shù)
   m_CurrentChunk->bytesRead += fread(buffer, 1, m_CurrentChunk->length - m_CurrentChunk->bytesRead, m_FilePointer);
   break;
  }

  // 增加從最后塊讀入的字節(jié)數(shù)
  pPreviousChunk->bytesRead += m_CurrentChunk->bytesRead;
 }

 // 釋放當前塊的內(nèi)存空間
 delete m_CurrentChunk;
 m_CurrentChunk = pPreviousChunk;
}



我想大家對這段代碼都很熟悉,不知大家是否也遇見過跟我類似的問題,也不知道我說明白了問題沒有,只希望對大家有所幫助O(∩_∩)O  。

posted on 2009-05-03 10:46 Little Star 閱讀(6554) 評論(7)  編輯 收藏 引用 所屬分類: Computer Graphics

評論

# re: 關(guān)于3ds讀取文件中一處錯誤的改正——Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted 2009-05-03 11:38 OwnWaterloo
Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted。
這個錯誤信息描述不太準確。
其意思是,msvc在debug下為棧上自動變量周圍分配了一些保護空間。
如果發(fā)生棧溢出, 就會寫到保護空間上去。
這樣, 棧溢出就能被檢查出來, 并且告訴程序員, 某個變量附近的棧空間被破壞(腐壞?)了。


所以要重現(xiàn)這個錯誤只要這樣:
int a[1212];
a[1986] = 0;

或者, 樓主的代碼與下面更類似:
int i;
(&i)[ 1 ] = 0; // 取i的地址, 將其作為數(shù)組傳遞給fread。
// 但其實這個“數(shù)組”, 只有一個元素。 也會發(fā)生溢出

要修改, 要么一次只讀取一個version。
要么將version改到合適大小(10就能保證一定不溢出嗎?)


  回復  更多評論
  

# re: 關(guān)于3ds讀取文件中一處錯誤的改正——Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted 2009-05-03 15:02 shongbee2
弱弱問問,您讀3DS文件是不是自己寫的?可以給我一個嗎?我現(xiàn)在正在學?我對里面的文件格式不是很了解,我寫的那個不能讀入包含拷貝鏡像變換的元素。也不能讀入a通道的材質(zhì)。反正問題很多。如果您那個能正常讀取的話,可以把代碼發(fā)到我的郵箱里面去嗎?我的郵箱是shongbee2@126.com
如果成功的話,一定重謝,因為他對我太重要了。謝謝。。。  回復  更多評論
  

# re: 關(guān)于3ds讀取文件中一處錯誤的改正——Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted 2009-05-03 22:22 Little Star
@OwnWaterloo
謝謝你的提醒。
這個錯誤的道理我當然明白,我起那樣的標題只是為了讓同樣遇見這個問題的人更容易的搜索到這。

這個辦法也是權(quán)益之計,我想如果10不夠大,可能就得再曾加一些,因為實在是搞不懂3ds這個鬼格式。目前這個改動至少能讓我把我的所有3ds文件都加載進來。  回復  更多評論
  

# re: 關(guān)于3ds讀取文件中一處錯誤的改正——Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted 2009-05-03 22:26 Little Star
@shongbee2
這個不是我自己寫的,也是從網(wǎng)上找的代碼,不過我把它整合到我的程序中了。
我也不大了解3ds的格式,材質(zhì)的讀取我也是從別的地方找的例子,照著上面做的。如果只能給你發(fā)一個可以讀取3ds文件格式的代碼O(∩_∩)O~  回復  更多評論
  

# re: 關(guān)于3ds讀取文件中一處錯誤的改正——Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted 2009-05-04 18:35 shongbee2
@Little Star
哦,謝謝。。啦。。博主加油。。。  回復  更多評論
  

# re: 關(guān)于3ds讀取文件中一處錯誤的改正——Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted 2011-05-30 14:44 hy
感謝啊,正好遇到這個問題  回復  更多評論
  

# re: 關(guān)于3ds讀取文件中一處錯誤的改正——Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted 2011-06-26 22:37 pandawuwyj
謝謝!正好碰到這個問題!  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            母乳一区在线观看| 亚洲国产精品va在线看黑人动漫| 亚洲一区二区av电影| 99精品视频一区| 日韩亚洲精品电影| 一区二区久久久久久| 国产日韩一区在线| 午夜精品福利视频| 欧美在线视频二区| 久久久久九九视频| 欧美激情1区2区| 国产精品视频九色porn| 国产在线拍揄自揄视频不卡99| 在线观看国产成人av片| 99亚洲一区二区| 久久福利影视| 欧美激情久久久久| 亚洲一本视频| 女人天堂亚洲aⅴ在线观看| 欧美日韩精品一区二区三区四区| 国产精品久久久久久久电影 | 亚久久调教视频| 久久一二三四| 欧美先锋影音| 亚洲电影中文字幕| 亚洲自拍偷拍网址| 欧美成人免费播放| 亚洲欧美国产日韩天堂区| 免费91麻豆精品国产自产在线观看| 欧美先锋影音| 亚洲久久一区二区| 久久先锋影音| 亚洲视频一区二区在线观看| 久久噜噜噜精品国产亚洲综合| 欧美日韩影院| 91久久久在线| 麻豆国产精品va在线观看不卡| 亚洲精品小视频在线观看| 久久久精品tv| 国产亚洲人成a一在线v站| 亚洲视频精品在线| 亚洲国产成人av在线| 亚洲一区二区三区高清| 欧美黄色小视频| 亚洲第一区色| 老鸭窝亚洲一区二区三区| 亚洲一区二区精品视频| 欧美日韩1区2区| 日韩视频免费观看高清完整版| 久久一区二区三区av| 亚洲一区二区三区国产| 国产精品国产成人国产三级| 一区二区三区产品免费精品久久75| 免费国产一区二区| 久久久久久9999| 国内精品99| 久久五月天婷婷| 久久久精彩视频| 影音先锋在线一区| 男女激情久久| 亚洲精品一区二区三区樱花| 欧美国产大片| 亚洲主播在线| 一本色道久久综合亚洲精品高清| 欧美大片在线观看一区| 亚洲成人在线观看视频| 久久亚裔精品欧美| 久久另类ts人妖一区二区| 尤物yw午夜国产精品视频| 久久精品国产久精国产爱| 欧美一区二区黄色| 国内精品美女av在线播放| 久久性色av| 久久综合五月| 99re热这里只有精品视频| 亚洲精品专区| 国产精品美女久久久久av超清 | 亚洲成在人线av| 欧美二区视频| 亚洲一品av免费观看| 亚洲一区二区三区精品在线观看| 国产精品一页| 欧美va亚洲va日韩∨a综合色| 久久字幕精品一区| 一区二区三区四区五区在线| 在线亚洲电影| 黄色成人在线网站| 亚洲国产婷婷香蕉久久久久久| 欧美区日韩区| 久久gogo国模裸体人体| 毛片精品免费在线观看| 亚洲综合第一| 久久综合中文| 午夜影视日本亚洲欧洲精品| 久久亚洲欧美国产精品乐播| 亚洲少妇在线| 久久九九久精品国产免费直播| 亚洲黄色在线看| 亚洲一区欧美| 亚洲欧洲日产国产网站| 亚洲欧美日韩精品久久亚洲区| 亚洲国产精品一区二区www在线| 亚洲日本电影在线| 国语自产在线不卡| 一区二区三区色| 91久久夜色精品国产九色| 亚洲一区二区三区精品视频| 亚洲免费电影在线观看| 欧美在线视频一区二区三区| 一区二区三区四区精品| 久久一区免费| 久久精品免费播放| 欧美日韩在线免费| 欧美激情一区在线| 国产一区二区三区视频在线观看| 亚洲免费播放| 日韩一级不卡| 免费视频一区| 美女精品在线观看| 国产在线精品一区二区中文| 亚洲一区二区精品在线| 欧美电影打屁股sp| 另类天堂av| 久久久亚洲国产天美传媒修理工| 免费在线亚洲欧美| 久久国产精品72免费观看| 欧美连裤袜在线视频| 裸体丰满少妇做受久久99精品| 欧美网站在线观看| 亚洲精品视频一区| 亚洲看片一区| 欧美韩国日本综合| 亚洲成色最大综合在线| 亚洲国产日韩一区| 欧美v日韩v国产v| 欧美黄色大片网站| 亚洲激情成人在线| 欧美成人激情视频免费观看| 欧美va亚洲va国产综合| 亚洲第一级黄色片| 免费中文日韩| 亚洲人体1000| 亚洲一区二区欧美| 国产精品视频观看| 欧美在线观看网站| 猫咪成人在线观看| 亚洲黄色在线视频| 欧美日韩精品一本二本三本| 夜久久久久久| 亚洲男同1069视频| 国产精品影片在线观看| 欧美在线观看www| 欧美 日韩 国产一区二区在线视频 | aa成人免费视频| 欧美日韩在线视频一区二区| 一区二区高清在线观看| 性欧美xxxx大乳国产app| 国产日韩综合| 免费观看日韩| 一区二区三区四区五区精品| 欧美在线看片| 亚洲国产欧美日韩| 欧美日韩一区精品| 性色一区二区| 亚洲高清在线视频| 午夜精品久久久久久久99樱桃| 国产一区二区精品久久91| 狼人社综合社区| 在线视频一区二区| 久久久久久久久久久久久女国产乱 | 欧美日精品一区视频| 在线视频亚洲| 欧美成人一区二免费视频软件| 亚洲精品乱码久久久久久久久| 欧美视频在线一区二区三区| 欧美一级艳片视频免费观看| 亚洲福利在线看| 小辣椒精品导航| 91久久精品日日躁夜夜躁欧美 | 亚洲精品一区中文| 久久人人爽人人| 久久亚洲综合色| 亚洲第一黄网| 国产精品自在线| 免费亚洲一区二区| 亚洲免费综合| 亚洲级视频在线观看免费1级| 欧美亚洲一级片| 日韩视频在线免费| 激情成人av| 国产精品日韩在线一区| 欧美成人自拍视频| 久久精品国产第一区二区三区| 99成人免费视频| 欧美.www| 久热综合在线亚洲精品| 先锋影院在线亚洲| 亚洲视频www| 99热这里只有成人精品国产| 在线免费观看视频一区|