c - 使用strcpy时访问冲突?

c - 使用strcpy时访问冲突?

明显的潜在问题是您的输出缓冲区没有分配足够的内存,或者您为dest. (可能不是,src否则它会在之前失败。)

请给出一个简短但完整的程序来重现该问题,我们可以检查...

这是一个在 Windows 上对我来说非常有用的例子:

#include

char* strcpy(char* dest, const char* src) {

char* dest2 = dest;

while (*src) {

*dest = *src;

src++;

dest++;

}

*dest = '\0';

return dest2;

}

void main() {

char *d = malloc(3);

strcpy(d, "hello there this is a longish string");

}

请注意,在这种情况下,我必须将实际分配的内存超出相当数量,然后才能使程序死机 - 只是“你好”没有崩溃,尽管它当然可能取决于编译器和执行环境的各个方面。