能一眼看出问题所在吗?
#pragma pack(push)
#pragma pack(1)struct test
{
public:
test(): name(0) {}
~test() {delete [] name;}
int a;
int aLen;
char* name;
};
#pragma pack(pop)
#define str1 "hello"
#define str2 "world"
int _tmain(int argc, _TCHAR* argv[])
{
vector<test> ltest;
test ltest1;
ltest1.a = 1;
ltest1.name = new char[12];
ltest1.aLen = sizeof(str1);
memcpy(ltest1.name, str1, sizeof(str1));
test ltest2;
ltest2.a = 2;
ltest2.name = new char[12];
ltest2.aLen = sizeof(str2);
memcpy(ltest2.name, str2, sizeof(str2));
ltest.push_back(ltest2);
ltest.push_back(ltest1);
return 0;
}
本文探讨了C++中使用动态内存分配及字符串拷贝时可能遇到的问题。通过具体的代码示例,展示了如何定义包含动态分配成员变量的类,并将其对象加入到std::vector容器中,同时指出了潜在的内存泄漏风险。
7521

被折叠的 条评论
为什么被折叠?



