下面的代码有一些真正奇怪的行为:将字符串复制到结构通过指针
当选择= 0时,它返回-1073741819。
当选择= 1时,它会运行但输出字符串会混乱。
#include <iostream>
#include <cstring>
using namespace std;
char* name[2] = {"WithoutSpaces","With spaces"};
struct entity{
char* name;
};
struct entity *foo1, *foo2;
int main(void){
foo1 = new entity;
foo2 = new entity;
int chosen = 1;
foo1->name = new char[sizeof(name[chosen])+1];
strcpy(foo1->name,name[chosen]);
foo2->name = new char[sizeof(name[chosen])+1];
strcpy(foo2->name,name[chosen]);
cout << foo1->name <<endl;
cout << foo2->name <<endl;
return 0;
}
发生了什么事?
'name [selected]'是一个指针。 'sizeof'指针不是你在这里需要的。你需要找出一个字符串的长度。但严重的是,请改用'std :: string'。 – juanchopanza
不要在C++中使用char * anc C数组 –
您忘记取消分配动态分配的所有内存。 – user2079303