开发平台(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其实无法这样改?
如有叙述不清请见谅,我会再补充,谢谢