通过多个方法传递 char* 最终不起作用
Passing char* through several methods doesn't work at the end
我在获得类成员的值后遇到了问题:
bool ModeData::setPasswd(char* _pass)
{
return (this->setString(this->passwd_, _pass) ? true : false);
}
bool ModeData::setOutput(char* _out)
{
return (this->setString(this->output_, _out) ? true : false);
}
其中setString如下:
bool ModeData::setString(char* _toStr, char* _fromStr)
{
// check if already exists and delete
this->delIfPresent(_toStr);
// allocate space for the new string
_toStr = new char[strlen(_fromStr) + 1];
// copy new string
if(strcpy(_toStr, _fromStr))
{
return true;
}
// if something gone wrong return 'false'
return false;
}
然后如果我想打印this->passwd_的值,我什么也得不到。我认为指针在传递方法时丢失了,但我不确定。
你应该通过ref…不,不!等一下。你应该而不是使用指针,你应该使用std::string
代替!这会让你的生活轻松很多。
_toStr = new char[strlen(_fromStr) + 1];
中的赋值),并且作为副作用,您的程序正在泄漏内存。
要解决这个问题,通过引用传递指针:
bool ModeData::setString(char*& _toStr, char*& _fromStr)
// ^ ^
并且不要忘记用new[]
分配delete[]
数组,否则您将有内存泄漏。但是让我再给你一次建议:使用std::string
而不是通过原始指针进行手动内存管理。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- Malloc void return char 数组有时不起作用(Terry Davis 对 C++);
- 将char转换为std::string不起作用
- 将字符串转换为char,当我cout时,它是正确的,但是当我将chdir与char一起使用时,它不起作用
- 为什么INT(char)的比较不起作用
- 删除Char指针在destructor中不起作用
- 为什么传递char[]不起作用,而(不推荐使用的转换)char*起作用
- 为什么"const int" "int"转换有效,但"const char[]"到"char *"不起作用
- QString到std::string到const char*的转换在赋值中不起作用
- 为什么从int到char的memcpy不起作用
- 手动设置 char* 的结尾不起作用
- 为什么这个<char>C++ money_put程序不起作用?
- 以双精度数除以双精度数来获得循环中的余数和char参数不起作用
- 通过多个方法传递 char* 最终不起作用
- 为什么我的简单反向char*不起作用