【发布时间】:2017-12-07 12:32:27
【问题描述】:
我想知道为什么在带有内部 CDT 构建器的 Eclipse 中我可以做到这一点
char *data = 0;
char data2[20] = "Hello";
strncpy(data, data2, 10);
但在视觉工作室我必须这样做
char *data = malloc(20);
char data2[20] = "Hello";
strncpy(data, data2, 10);
如您所见,我必须在 Visual Studio 中使用 malloc(),否则我会遇到内存访问冲突,但为什么在 Eclipse 中不需要它?
【问题讨论】:
-
第一个 sn-p 指向undefined behavior。故事结束。
-
对不起,我真的没有。如果我知道我不会问...
-
@Someprogrammerdude 解释为什么这是 UB 会更有帮助,就像在下面的答案中所做的那样。
-
没有CDT的segfault还是很奇怪的。
-
@Gerhardh 也许可以,但我从未见过这样的实现,我怀疑这是否方便。