c-动态内存分配不会造成缓冲区溢出



我有这段代码用于测试

char *name;
name = (char *) malloc(21); // 20 char + '' byte
printf("Input your name: ");
gets(name);
printf("%sn", name);

如果我理解的话,malloc已经分配了21个字节的块内存,我将其转换为一个char指针。我在测试中输入了一些大长度的字符串(超过21个字符),但没有出现缓冲区溢出。

我没有领会的概念是什么?

一旦将第22个字符写入name,就会发生缓冲区溢出。该字符存储在分配给name的存储器之外的存储器位置中。溢出缓冲区的影响是未定义的行为,它有一个不做任何值得注意的事情的坏习惯,尤其是在简单的应用程序中。

相关内容

  • 没有找到相关文章

最新更新