c - 代码行澄清

标签 c arrays pointers memory stack

我正在读一本关于缓冲区溢出和 shellcode 的书,书中有下面的代码。

我理解其中的大部分内容,除了 buffer = command +strlen(command); 的目的。

当我在缓冲区上使用 memset() 时,它不会覆盖我之前使用 command+strlen(command) 存储的内容吗? 有人可以帮我解释一下吗?

code

最佳答案

+ 的操作数之一是指针时,C 会进行指针算术。

结果或指针+数字是一个指针值,指向索引为数字的值。它相当于&pointer[number]

所以,在这种情况下:

buffer = command + strlen(command);

相当于

buffer = &command[strlen(command)];

因此,buffer将指向command中的字符串终止符,如果您想将某些内容连接到command,这正是正确的位置字符串。

关于c - 代码行澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39514162/

相关文章:

c - MPI 检查通信器是否为 MPI_COMM_WORLD

javascript - Angularjs 数组中的嵌套对象数组

java - JAVA中不同数量的数组和数组元素生成子集

c - 使用指针比使用 C 中的数组语法快得多,这仍然是真的吗?

c - 为什么在 "while"中使用常量时 MSVC 会生成警告 C4127 - C

c - 如何找出在 Linux 上使用 unix 域套接字连接的两个客户端之间缓冲的数据

c - 如何从文件中读取指向整数指针的指针?

javascript - 通过循环内的数组属性过滤集合

c++ - 更改动态分配数组的指针

html - 输入按钮的光标将无法设置为指针