每次读取文件时,我都尝试使用不同长度的字节读取二进制文件。得到值后,我尝试将字节转换为char*
.
我创建了一个简单的代码如下:
//This code is compiled in Visual Studio 2010
typedef unsigned char BYTE;
BYTE *s;
s = new BYTE[3]; // I read 2 bytes from the file, I add +1 to reserve NULL
s[0]= 'a'; s[1]='b';s[2]=NULL; //just an example I get 2 bytes from file
char* b;
b = new char(sizeof(s));
strcpy(b,(char*)s);
s[0]='x';
cout << s <<"--"<< b<< "--"<< endl;
delete[] s;
delete[] b;
cin.get();
return 0;`
但是,代码会生成错误“检测到堆损坏”。当我删除该行时,delete[] b;
程序运行良好。但我不确定下次是否会出现问题。请有人解释一下吗?如果我删除它会导致内存泄漏delete[] b;
吗?有什么建议可以改进我的代码吗?