读书人

char[]类型转换有关问题

发布时间: 2012-03-16 16:34:56 作者: rapoo

char[]类型转换问题

C/C++ code
class CCollectAlarmMsg{public:    uint32_t         m_uiAlarmColor     ;    char             m_szTitleDesc[]    ;};CCollectAlarmMsg *pAlarmMsg=(CCollectAlarmMsg *)malloc(sizeof(CCollectAlarmMsg));

1、直接使用strcpy给m_szTitleDesc赋值,会不会造成内存脏读;
2、若使用malloc给m_szTitleDesc分配内存,怎么强制转换类型?
pAlarmMsg->m_szTitleDesc=(char *)malloc(128);

[解决办法]
探讨
那么在类里面在加一个成员,编译器就可以检查出你的错误了。
即:
class CCollectAlarmMsg
{
public:
uint32_t m_uiAlarmColor;
char m_szTitleDesc[];
uint32_t m_test;
};

[解决办法]

1、直接使用strcpy给m_szTitleDesc赋值,会不会造成内存脏读;
肯定会有内存泄漏
2、若使用malloc给m_szTitleDesc分配内存,怎么强制转换类型?
注意数组与指针是有区别的
像你的,改为指针就可以了
class CCollectAlarmMsg
{
public:
uint32_t m_uiAlarmColor ;
char * m_szTitleDesc ;
};
...
pAlarmMsg->m_szTitleDesc=(char *)malloc(128);
[解决办法]
探讨

刚才在chinaunix看到类似的问题,可以看看:http://bbs.chinaunix.net/viewthread.php?tid=1455677&extra=&page=1

其实这里应该:

CCollectAlarmMsg *p=(CCollectAlarmMsg *)malloc(sizeof(CCollectAlarmMsg)+iLen);……

读书人网 >C语言

热点推荐