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;