开发平台(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其实无法这样改?
如有叙述不清请见谅,我会再补充,谢谢
作者:
wtchen (没有存在感的人)
2016-05-31 22:33:00....我看不太懂说, 为啥纯C里会有new? 不是应该用malloc?抱歉我看漏了
作者:
CaptainH (Cannon)
2016-05-31 23:38:00真有必要把C++改C?很难喔!用extern "C" 包装一下接口比较好
作者:
descent (“雄辩是银,沉默是金”)
2016-05-31 23:49:00可以用 c++ compile to obj, 再 link obj
作者:
EdisonX (卡卡兽)
2016-06-01 02:49:00原本是 struct SupportPattern* m_sps[20] ; 和你后面配置的 20 * sizeof(struct SupportPattern) 有所不同 , 若你是想将 OpenCV 改成纯 C 的话... 保重!
作者:
bibo9901 (function(){})()
2016-06-01 02:54:00我真好奇为何你struct 里 Eigen:: 那行可以通过编译或许你还是用C++ compiler (?) 这样的话你到底想做什么
作者:
EdisonX (卡卡兽)
2016-06-01 02:55:00@bibo9901 , 我猜他没把副档名改成 .c ? (vc 编译器)你原本的做法应该是要先配置好 20 个 pointer , 再用每个pointer 往下配置出实际 SupportPattern.
作者:
bibo9901 (function(){})()
2016-06-01 02:56:00对啊 ..连code原本的意思都没弄清楚
作者:
EdisonX (卡卡兽)
2016-06-01 02:59:00struct SupportPattern ** m_sps;rand->m_sps=(T**)malloc(20*sizeof(SupportPattern*));for(i = 0; i < 20 ; ++i)rand->m_sps[i]=(T*)malloc(sizeof(SupportPattern);大概是这样吧,上面的 T 自己换成 struct name.
作者:
bibo9901 (function(){})()
2016-06-01 14:03:00XDD RIP期待你用C做出 expressio template
作者:
damody (天亮damody)
2016-06-01 16:03:00选对的工具 别创新工具 除非是做兴趣的