假设有如下几个文件main.c,IRSend.c, IRSend.h
在IRSend.h中定义如下:
typedef struct {
int recvpin;
int rcvstate;
int timer;
} irparams_t;
extern volatile irparams_t *irparams;
在IRSend.c中定义如下:
#include “IRSend.h”
volatile irparams_t *irparams=new volatile irparams_t;
void a()
{
irparams->recvpin=1;
}
void b()
{
irparams->rcvstate=2;
}
void c()
{
irparams->timer=2;
}
在main.c中定义如下:
#include “IRSend.h”
void main()
{
a();
b();
c();
}
问一下应在哪个地方delete irparams。
在IRSend.h中定义如下:
typedef struct {
int recvpin;
int rcvstate;
int timer;
} irparams_t;
extern volatile irparams_t *irparams;
在IRSend.c中定义如下:
#include “IRSend.h”
volatile irparams_t *irparams=new volatile irparams_t;
void a()
{
irparams->recvpin=1;
}
void b()
{
irparams->rcvstate=2;
}
void c()
{
irparams->timer=2;
}
在main.c中定义如下:
#include “IRSend.h”
void main()
{
a();
b();
c();
}
问一下应在哪个地方delete irparams。
解决方案
10
main函数内末尾
10
void main()
{
a();
b();
c();
//在这里delete吧
}
{
a();
b();
c();
//在这里delete吧
}
20
你可以考虑在类的析构函数中释放内存
20
再封装一层,或题主直接使用智能指针