【发布时间】:2020-04-13 21:19:33
【问题描述】:
所以,我只是在搞乱一些代码,询问用户他们想雇用多少人员。输入他们想要的数字后,我启动了 3 个指针。我关注的指针是字符串指针“employee_Names”。初始化后,我尝试根据用户对指针“employee_Names”的输入动态分配所需的适当内存量。
我认为我的语法很适合这部分,但是当我尝试将信息实际存储在分配的内存中时,我的问题就出现了。如代码所示,我尝试直接将employee_Names[0] 设置为一个名称,但这会给我带来错误。
personnel = requested_service() - 1;
string *employee_Names;
int *employee_Ages;
char *employee_Company;
employee_Names = (string*)malloc(personnel);
employee_Names[0] = "Bahn";
printf("Employee number 1 is: %s", employee_Names[0]);
我真的很想得到一些启发。如果我需要更具体地了解某个领域,或者是否需要查看更多代码,请告诉我。
【问题讨论】:
-
在 C++ 中,“动态字符串数组”拼写为
std::vector<std::string>。尽管在您的示例中,您可能想要定义一个类Employee,然后使用std::vector<Employee> -
std::string是一个需要适当构造的复杂对象。malloc提供内存但不调用构造函数。如果没有调用strings 构造函数之一,您实际上就没有string。你有一块内存伪装成string,它几乎是一个定时炸弹。用这个未初始化的内存做任何stringish 都会导致程序崩溃,而程序崩溃是最好的情况。
标签: c++ string malloc dynamic-memory-allocation