麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

第一次移植出現(xiàn)的問(wèn)題小結(jié)

2019-11-11 05:45:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

    在快放假的前兩三個(gè)星期,移植公司一個(gè)大神負(fù)責(zé)的項(xiàng)目的代碼,我第一次接觸這種一個(gè)函數(shù)就有一千多行的代碼,有點(diǎn)大開(kāi)眼界啊同時(shí)忙到飛起!大神就是不一樣!他本來(lái)在windows下寫(xiě)的是C風(fēng)格的,然后我先將這些直接放在一個(gè)類里測(cè)試了一遍,然后將其轉(zhuǎn)成C++風(fēng)格的,最后再在linux上調(diào)試測(cè)試對(duì)比。

    這次的移植讓我明白了一個(gè)問(wèn)題,原來(lái)移植不只是復(fù)制粘貼,那么就不叫做移植了。然后就是找問(wèn)題找bug是一個(gè)漫長(zhǎng)的調(diào)試過(guò)程,還有就是有時(shí)候通過(guò)調(diào)試知道了是在某一行出現(xiàn)了問(wèn)題,但真正導(dǎo)致出問(wèn)題的不是這一行,或者不是這一行附近的一些行,因?yàn)檫@些行邏輯和語(yǔ)法上都沒(méi)有任何問(wèn)題。真正的問(wèn)題出現(xiàn)在之前不報(bào)錯(cuò)的某一行或者某些行中,經(jīng)過(guò)一定時(shí)間導(dǎo)致了內(nèi)存泄漏,感覺(jué)內(nèi)存泄露真的是個(gè)不好找的問(wèn)題。

    我出現(xiàn)的一些問(wèn)題,總結(jié)如下,怕以后自己忘記:

1、vector.clear()之后導(dǎo)致的下標(biāo)超出問(wèn)題(特別是在循環(huán)判斷中)

        比如在一個(gè)vector的循環(huán)中有一個(gè)判斷,滿足這個(gè)判斷就clear這個(gè)容器,那么下一次再循環(huán)時(shí),容器里面什么都沒(méi)有,所以不能訪問(wèn)容器某個(gè)位置的元素了,這樣會(huì)報(bào)下標(biāo)超出的錯(cuò)。

2、vector.erase()導(dǎo)致的迭代器失效問(wèn)題

        erase語(yǔ)句會(huì)返回一個(gè)迭代器,比如現(xiàn)在對(duì)第三個(gè)位置的元素進(jìn)行erase,那么內(nèi)部是第四個(gè)位置的元素自動(dòng)填補(bǔ)上來(lái),會(huì)移到第三個(gè)位置處,所以返回的仍然是第三個(gè)位置處的迭代器,但這個(gè)迭代器指的元素已經(jīng)是下一個(gè)元素了而已。

       我本來(lái)是這樣子修改的:

for(vector<int>::iterator it=vec.begin();it!=vec.end();it++){   if(*it==0){      it=vec.erase(it);      if(it==vec.end())         break;      else         continue;   }   ......}      這樣子沒(méi)有語(yǔ)法錯(cuò)誤,但它漏掉了元素,因?yàn)閑rase返回的本來(lái)就是下一個(gè)元素了,還進(jìn)行it++就是下下個(gè)元素了,所以漏掉了一些元素,沒(méi)有達(dá)到遍歷所有元素的效果。后來(lái)我修改成新定義一個(gè)迭代器:vector<int>::iterator iter=vec.erase(it);然后不用這個(gè)迭代器,當(dāng)然it++也會(huì)跳過(guò) 但我后面想辦法不讓它跳過(guò),總之也搞定了。但這樣子老板不放心。

最后老板說(shuō)將所有滿足if的需要?jiǎng)h掉的元素的位置用一個(gè)數(shù)組保存起來(lái),在循環(huán)結(jié)束后,對(duì)vector里的每個(gè)元素進(jìn)行遍歷,如果這個(gè)元素的下標(biāo)不是之前的數(shù)組里的,那么就保存這個(gè)元素到另一個(gè)新容器中,否則不保存這個(gè)元素,對(duì)下一個(gè)元素下標(biāo)進(jìn)行判斷。老板說(shuō)這樣最安全。3、memset不能給類清零,最好只給數(shù)組或結(jié)構(gòu)體清零

      本來(lái)是一個(gè)包含string和int的結(jié)構(gòu)體,結(jié)果我用memset對(duì)這個(gè)結(jié)構(gòu)體進(jìn)行清零,后來(lái)報(bào)錯(cuò)了。原來(lái)不能對(duì)類、包含類的數(shù)組或結(jié)構(gòu)體進(jìn)行清零。因?yàn)轭愑凶约旱囊惶追绞健?/p>

4、linux函數(shù)聲明和定義時(shí)的默認(rèn)實(shí)參與windows上的有點(diǎn)不一樣

     如果我沒(méi)記錯(cuò),windows上函數(shù)聲明和定義時(shí)都可以寫(xiě)上默認(rèn)實(shí)參的值,但linux上卻是在聲明時(shí)寫(xiě)了默認(rèn)實(shí)參的值在定義時(shí)就不能寫(xiě)了。

5、windows轉(zhuǎn)成linux時(shí)同樣的代碼不能跑是格式問(wèn)題

     在windows和linux之間進(jìn)行轉(zhuǎn)換,好像有格式問(wèn)題,自動(dòng)的。可以用記事本查看格式被轉(zhuǎn)成了什么格式,轉(zhuǎn)到適合各自系統(tǒng)的再保存一遍就可以了。

6、windows下sort()函數(shù)自定義比較規(guī)則時(shí)

     sort( ,,)如果第三個(gè)參數(shù)是個(gè)返回bool型的函數(shù)f(),如果這個(gè)函數(shù)是個(gè)全局的函數(shù),那么直接用它的名字做第三個(gè)參數(shù)就是了,就代表指向函數(shù)地址的指針;如果這個(gè)函數(shù)是某個(gè)類的成員函數(shù),那么一定要加類作用域限定符,不然找不到的。

//sort(AlgaePRiority.begin(), AlgaePriority.end(), &EcologyMath::SortForVectorByPriority|);//windows:類名::函數(shù)名

7、linux和windows下使用三個(gè)實(shí)參的sort()函數(shù)調(diào)用形式不一樣的問(wèn)題

      windows下調(diào)用三個(gè)參數(shù)的sort()函數(shù)就是第三個(gè)參數(shù)直接用函數(shù)名即可;但linux下不是 :

sort(AlgaePriority.begin(), AlgaePriority.end(), bind(&EcologyMath::SortForVectorByPriority,this,_1,_2));//linux	//sort(AlgaePriority.begin(), AlgaePriority.end(), &EcologyMath::SortForVectorByPriority|);//windows

8、又犯了個(gè)傻問(wèn)題 聲明幾個(gè)同類型指針時(shí)我竟然并排聲明

      iplImage*  img1;

      IplImage*  img2;

     應(yīng)該這樣才對(duì)嘛。

9、Alt加左箭頭表明回退  Ctrl加Z也表示回退 但兩種回退有點(diǎn)不同  Ctrl加/表明注釋  cvSobel()在轉(zhuǎn)化為Sobel()時(shí)的問(wèn)題還要加句

 convertScaleAbs

10、還有別的我寫(xiě)的傻問(wèn)題 比如new了沒(méi)delete啊 boundingRect函數(shù)的問(wèn)題 while里我本來(lái)還寫(xiě)了個(gè)死循環(huán)  還有C風(fēng)格的尋找凸包和凹陷檢測(cè)時(shí)最遠(yuǎn)點(diǎn)轉(zhuǎn)化為C++風(fēng)格時(shí)的問(wèn)題。

11、opencv3.1和opencv3.2加載SVM分類器的函數(shù)放的位置不一樣了

//opencv3.1	Ptr<ml::SVM> fusizao_svm;	fusizao_svm = ml::SVM::create();	fusizao_svm = ml::SVM::load<ml::SVM>("fusizao_svm.xml");//opencv3.2	Ptr<cv::ml::SVM> fusizao_svm;	fusizao_svm = ml::SVM::create();	fusizao_svm = Algorithm::load<cv::ml::SVM>("fusizao_svm.xml");


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日本a∨精品中文字幕在线 狠狠干精品视频 | 91午夜少妇三级全黄 | 欧美激情区 | 久久777国产线看观看精品 | 黄色网址免费在线 | 黄色网址免费在线播放 | 国产第一页精品 | 亚洲精品久久久久www | 免费看黄色一级大片 | h久久| 免费看成年人网站 | 久草在线视频精品 | 久久靖品 | 欧美日韩成人一区二区 | 国产自91精品一区二区 | 免费看操片| 5xsq在线视频| a级毛片免费观看在线播放 日本aaa一级片 | 久久久久久久一区 | 中文字幕国产亚洲 | 羞羞视频免费入口网站 | 久久综合给合久久狠狠狠97色69 | 毛片一级片 | 免费国产一级淫片 | 久草导航| 久久男人| 欧美wwwwww| 丁香天堂网 | 视频h在线 | av手机免费在线观看 | 日本在线播放一区二区三区 | 久久久精品视频免费看 | 欧美老外a级毛片 | 中文字幕1区2区 | 欧美精品毛片 | av在线在线| 亚洲字幕av | 欧美淫交 | 宅男噜噜噜66国产在线观看 | 亚洲影视在线 | 日韩在线激情 |