Bhu*_*gav 1 malloc memory-management visual-c++
我收到了这个错误 error C2440: '=' : cannot convert from 'void *' to 'TrackedObj *'
我的TrackedObj结构如下所示:
typedef struct {
IplImage* hsv;
IplImage* hue;
IplImage* mask;
IplImage* prob;
CvHistogram* hist;
CvRect prev_rect;
CvBox2D curr_box;
} TrackedObj;
Run Code Online (Sandbox Code Playgroud)
我的代码:
TrackedObj *obj ;
obj = malloc(sizeof *obj) ;
Run Code Online (Sandbox Code Playgroud)
您正在使用C++编译器进行编译,该编译器不允许在没有强制转换的void *情况下转换为其他类型.
您可以添加演员:
obj = static_cast<TrackedObj *>(malloc(sizeof *obj)) ;
Run Code Online (Sandbox Code Playgroud)
或者,new改为使用:
obj = new TrackedObj;
Run Code Online (Sandbox Code Playgroud)
确保使用delete释放分配的内存new.
如果您将源文件重命名为具有.c扩展名而不是.cpp,您的Visual C++编译器(我假设这基于C2440错误代码)应该将源代码编译为C,并且malloc不需要强制转换.