动态内存分配不会使(制作)buff 溢出?
Dynamic memory allocation does not make (making) a buff overflow?
我有此代码用于测试目的
char *name;
name = (char *) malloc(21); // 20 char + '[=10=]' byte
printf("Input your name: ");
gets(name);
printf("%s\n", name);
如果我理解的话,malloc 已经分配了一些块内存的 21 个字节,我将其转换为一个 char 指针。
我在测试中输入了一些大长度的字符串(超过 21 个字符),但没有出现缓冲区溢出。
我没有掌握什么概念?
当您将第 22 个字符写入 name
时,就会发生缓冲区溢出。该字符存储在为 name
分配的存储空间之外的内存位置。溢出缓冲区的影响是未定义的行为,它有一个不做任何值得注意的事情的坏习惯,尤其是在简单的应用程序中。
我有此代码用于测试目的
char *name;
name = (char *) malloc(21); // 20 char + '[=10=]' byte
printf("Input your name: ");
gets(name);
printf("%s\n", name);
如果我理解的话,malloc 已经分配了一些块内存的 21 个字节,我将其转换为一个 char 指针。 我在测试中输入了一些大长度的字符串(超过 21 个字符),但没有出现缓冲区溢出。
我没有掌握什么概念?
当您将第 22 个字符写入 name
时,就会发生缓冲区溢出。该字符存储在为 name
分配的存储空间之外的内存位置。溢出缓冲区的影响是未定义的行为,它有一个不做任何值得注意的事情的坏习惯,尤其是在简单的应用程序中。