![]() |
1
19
未定义的行为意味着编译器可以发出执行任何操作的代码。工作是未定义的一个子集。 |
![]() |
2
4
|
![]() |
3
2
也许令人惊讶的是,编译器已经分配了文本
|
![]() |
4
1
这次你很幸运。
|
![]() |
5
1
可以更改ptr指向的内容,但不能更改ptr:
可以更改ptr,但不能更改ptr所指的内容:
无法更改任何内容:
|
![]() |
6
1
根据C99规范(C99:TC3,6.4.5,§5),字符串文字是
具有相同内容的不同字符串文字可以(但不必)映射到相同的内存位置。由于行为是未定义的,编译器可以自由地将它们放在只读部分,以便彻底失败,而不是引入可能难以检测的错误源。 |
![]() |
7
1
没有。它导致Ubuntu x64上出现分段错误;要让代码正常工作,它不应该只是 work on your machine .
虽然只有当“世界”适合堆栈数据之间未使用的空间时,您才是安全的-更改
|
![]() |
8
0
由于常量修饰符丢失,您基本上禁用了防止写入不应该写入的内存的安全性。C几乎不能阻止你射中自己的脚。在这种情况下,你很幸运,只擦伤了你的小拇指。 |
![]() |
9
0
s指向一个包含“hello”的内存位,但并不打算包含更多的内容。这意味着您很可能会覆盖其他内容。这是非常危险的,尽管它似乎起了作用。 两项意见:
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 5 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |