今天在进行memcpy出现了一些问题。
原因是这样的:
我定义了这样一个接口,里面涉及memcpy操作。
举个例子吧,如接口addItem,
void addItem(int iType, LPVOID *pItem);
里面有一个对象是TCHAR szStr[512];
我直接进行了这样的拷贝,memcpy(szStr, pItem, sizeof(szStr));
今天就出问题了。提示某块内存无法访问。于是重新看这个问题。为什么会这么写这样的接口呢?
我原先写的是 void addItem(int iType, TCHAR *pItem);
后来由于需求的变化,变成了LPVOID。改成这个以后,原先的字符串wcscpy就变成了memcpy。这个一直没有引起警觉。其实这一步的改变,就应该对接口做相应的调整,接口应该变为
void addItem(int iType, LPVOID *pItem, DWORD cbItem);
增加一个参数来说明pItem的大小。然而这一步没有做。
所以今天的教训就是要注意修改接口的时候,注意相应的变化。
还有是字符串的操作问题,宽字符和ASCII字符串的操作要注意。
posted on 2009-07-29 11:58
Sandy 阅读(170)
评论(0) 编辑 收藏 引用 所属分类:
日常总结