while(*a++ = *b++){}
其中a和b是有效的char指针。
答案 0 :(得分:11)
如果b是一个10个字符的空终止字符串,而a是一个已经分配了4个字符的缓冲区,那么你将使用上面的代码在已分配的内存之外写入。
答案 1 :(得分:7)
一个替代答案:
char *a = "Hello";
char *b = "World";
这些都是有效的char指针。但是a并没有指出可写的记忆。
答案 2 :(得分:3)
指向的字符串可能不会以空值终止,这意味着数据正在被读取并分配给它应该无法访问的内存,因此违规。
答案 3 :(得分:1)
看起来为数组'a'分配的内存小于数组'b'的长度。
答案 4 :(得分:0)
如果您在MSDev上运行它,请在调试器中将其打包并逐步执行,和/或查看存储a和b的实际内存区域,并直接查看正在进行的操作。它可能是已经提到过的任何可能性。