C++ C++;指针的漏洞问题
在一份测试文档中,我发现有人问我以下代码中的问题是什么:C++ C++;指针的漏洞问题,c++,security,memory-leaks,C++,Security,Memory Leaks,在一份测试文档中,我发现有人问我以下代码中的问题是什么: #include <iostream> #include <stdlib.h> #include <string.h> using namespace std; int main() { char* a = (char*) malloc (20); char* b = (char*) malloc (20); strcpy(b, "Secure Coding"); st
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main()
{
char* a = (char*) malloc (20);
char* b = (char*) malloc (20);
strcpy(b, "Secure Coding");
strcpy(a, "Insecure Coding");
a = b;
cout << a << endl;
cout << b << endl << endl;
free(a);
free(b);
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
char*a=(char*)malloc(20);
char*b=(char*)malloc(20);
strcpy(b,“安全编码”);
strcpy(一种“不安全编码”);
a=b;
库特
在此分配之后,a指向与b相同的位置(“安全编码”)。您丢失了对a指向的初始位置的任何引用,因此本质上“不安全编码”是无法释放的垃圾
另一个问题是,您正在释放同一指针两次。第一次释放后,您不再拥有该内存
请参阅:好的,您认为如何?您分析了代码及其作用了吗?另外,如果您发布编译代码也会有所帮助,因为现在代码的问题是它无法编译。然而,这与安全性或“安全代码”无关还有,为什么你把这个问题加上C?这不是C代码,那是C或C++代码。这是C代码?我一定是做错了……错误的标签,请修复。
a=b;