開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
OpenCV, Eigen
問題(Question):
由於某些關係,需要把C++的程式轉成純C語言
所以需要把原本一些類別轉為結構
遇到new的時候不太會處理,在new的那一行已經卡了3天了orz
錯誤結果(Wrong Output):
執行過程中發生堆積損毀
程式碼(Code):(請善用置底文網頁, 記得排版)
//以下struct原本均為class
struct SupportPattern
{
Eigen::VectorXd x[100];
FloatRect yv[100];
int y;
int refTop;
int yvTop;
};
struct LaRank
{
.
.
.
//原本struct SupportPattern* m_sps[20];
struct SupportPattern* m_sps;
.
.
.
};
/*在初始化函數裡有做分配記憶體的動作
**...
**rank是LaRank的結構
**rank->m_sps =
** (struct SupportPattern*)malloc(20 * sizeof(struct SupportPattern));
**...
*/
發生錯誤的函數
void Update(struct LaRank* rank)
{
原先有一個SupportPattern *sp = new SupportPattern的動作
sp->y = y;
sp->yvTop = 0;
sp->refTop = 0;
最後將sp指定給rank->m_sps[i] = sp;
後來改成結構後直接指定,ex:
rank->m_sps[i].y = y;
rank->m_sps[i].yvTop = 0;
rank->m_sps[i].refTop = 0;
.
.
.
}
執行後就發生問題堆積損毀的情形
我在想是不是指定記憶體大小那邊就有問題?
因為rank->m_sps[1]似乎就取不到東西
或是new其實無法這樣改?
如有敘述不清請見諒,我會再補充,謝謝