【发布时间】:2015-05-12 08:51:57
【问题描述】:
为什么……
char *dst = (char*) malloc(sizeof(char) * 11);
char *src = "ABCDEFGHIJKLMNOPQRSTUVQXYZ";
strncpy(dst, src, 10);
... 工作正常,但是...
char *dst = "ABCDEFGHIJ\0";
char *src = "ABCDEFGHIJKLMNOPQRSTUVQXYZ\0";
strncpy(dst, src, 10);
...甚至...
char *dst = "ABCDEFGHIJ\0";
char *src = "KLMNOPQRST\0";
strncpy(dst, src, 10);
给出段错误?
另外,这是怎么回事:
char *dst = (char*) malloc(sizeof(char) * 10); // also works with 9
char *src = "ABCDEFGHIJKLMNOPQRSTUVQXYZ\0";
strncpy(dst, src, 10);
将 11 个字节复制到分配有 10 个字节的指针中,原则上应该会失败吗?
【问题讨论】:
标签: c segmentation-fault malloc strncpy