有无知道这个情况的!CFile::Read()函数的问题,具体如下!

都知道这个函数的第一个参数是缓冲区 那么 缓冲区起码该够大吧? 但是我这样
char *pString=new char;
CString String;
files.Read(pString,9);
String=pString;
CDC *pDC=GetDC();
pDC->TextOutW(0,0,String,9);
一段代码 竟然可以正常的读取 这是为什么呢? 难道是像字符串指针一样? “指针指向读出来的字符串?” 而且 如果把pString指向一个char变量 也不能正确运行 单单new分配内存可以 这为什么呢? 还有 Read()函数内部是怎么把读出来的数据放到我们提供的缓冲区的呢? 是不是一个字符一个字符的拷贝? 那和字符串指针有什么区别? 那不用初始化的指针不也可以用了吗?
Read()函数内部是怎么把读出来的数据放到我们提供的缓冲区的呢? 是不是一个字符一个字符的拷贝? 那和字符串指针有什么区别? 那不用初始化的指针不也可以用了吗?

达令说
浏览 345回答 2
2回答

牛魔王的故事

char * 就是 string但是你用new char ,只分配了一字节空间,能成功运行,不代表他是正常的Read()后,自动一直向高地址填充数据你又声明了一个CString 指向了 pString的地址,也就是那个串的首地址所以能正常输出,
打开App,查看更多内容
随时随地看视频慕课网APP