我正在浏览博客,详细介绍了 OpenSSL 的 Heartbeat 实现的易受攻击的代码。
我找到了这一行:
unsigned char *P = &s->s3->rrec.data[0], *p1;
我不明白的是这个指针 *p 是如何分配两个不同的值的? 一个是:
&s->s3->rrec.data[0] (also, why is he referencing s?)
另一个是
*p1
为什么这个指针被分配了两个不同的值?
最佳答案
下面的语句
unsigned char *P = &s->s3->rrec.data[0], *p1;
等于
unsigned char *P = &s->s3->rrec.data[0];
unsigned char *p1;
这进一步等于
unsigned char *P;
unsigned char *p1;
P = &s->s3->rrec.data[0];
而在C中,&s->s3->rrec.data[0]
表示取s->s3->rrec.data[0]
的地址.
哦对了,unsigned char *P = &s->s3->rrec.data[0];
是指针变量P
的定义和初始化,里面没有赋值。
关于c++ - 在 c/c++ 中分配指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23314874/