![]() |
1
2
malloc的分配常常比您实际要求的要多(所有系统/环境/操作系统都依赖),这就是它在您的场景中工作的原因(有时)。但是,这仍然是未定义的行为,它实际上只能分配1个字节(并且您正在写入可能未分配的堆内存)。 |
![]() |
2
2
C不要求对数组访问进行任何类型的边界检查,而且有可能溢出存储并写入技术上不属于您的内存。只要你不破坏任何“重要”的东西,你的代码就会 出现 按计划工作 但是,缓冲区溢出的行为是 未定义 ,因此结果通常不可预测或重复。 |