我在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有链接

最佳答案

看起来您不是将字符串结尾为零,而不是新创建的Bchar缓冲区。根据将Bchar缓冲区复制到缓冲区后的处理方式,很可能会访问缓冲区的末尾。

代替ZeroMemory / memcpy,只需使用strcpy(或strcpy_s)。

关于c++ - memcpy和_CrtlsValidHeapPointer(pUserData),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20439018/

10-11 16:11