都知道这个函数的第一个参数是缓冲区 那么 缓冲区起码该够大吧? 但是我这样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()函数内部是怎么把读出来的数据放到我们提供的缓冲区的呢? 是不是一个字符一个字符的拷贝? 那和字符串指针有什么区别? 那不用初始化的指针不也可以用了吗?
2 回答
牛魔王的故事
TA贡献1830条经验 获得超3个赞
char * 就是 string
但是你用new char ,只分配了一字节空间,能成功运行,不代表他是正常的
Read()后,自动一直向高地址填充数据
你又声明了一个CString 指向了 pString的地址,也就是那个串的首地址
所以能正常输出,
添加回答
举报
0/150
提交
取消