明显的潜在问题是您的输出缓冲区没有分配足够的内存,或者您为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");
}
请注意,在这种情况下,我必须将实际分配的内存超出相当数量,然后才能使程序死机 - 只是“你好”没有崩溃,尽管它当然可能取决于编译器和执行环境的各个方面。