【发布时间】:2013-12-24 16:43:20
【问题描述】:
我的 for 循环中的 memcpy 有问题 - 我需要将字符串转换为 *char:
for(i=0;i<10000;i++){
char* Bchar = new char[Bi[i].length()+1];
ZeroMemory(Bchar,Bi[i].length());
memcpy(Bchar, Bi[i].c_str(), Bi[i].length()); //Exception on this row
...
delete [] Bchar;
}
有exception的链接
【问题讨论】:
-
ZeroMemory完全是对 CPU 周期的浪费,因为您将要对刚刚归零的数据中的每个char进行爆破。其次,如果大小与您描述的一样并且B[i]是有效对象(后者非常 重要),则您的memcpy不能是错误的行。可能是 next 行出错,因为您永远不会终止您的字符串,因此任何依赖于所述终止的代码都会完全呕吐,或者B[i]可能无效。 -
基于各种cmets,我怀疑
...部分代码可能存在其他问题。
标签: c++ string visual-studio char memcpy