c++字符串字面值问题。
c++中字符串字面值也就是c风格的字符串,作为右值使用是自动转换为指向首字符的指针,做为左值使用是不可更改,不转换为指针,下面两个代码:char a[ ] = "c++"
char *p = "c++"
第一个代码中字符串字面值显然作为左值,第二个显然作为右值, 我真看晕了,麻烦各位大虾帮帮忙,在此谢过了。
char *pMsg = (char*)malloc(6); strcpy(pMsg,"hello");这种情况在pMsg的内存前四个字节和后四个字节都是FD,通过查看内存中的FD是否存在可以判断是否溢出
char *p = (char*)malloc(1); strcpy(p,"hi");通过这种形式分配,可以赋值成功,但后面两个FD被破坏了,显然溢出了,这时就需要改代码了