C++ 赋值崩溃
c++ assignment is crashing
我目前正在用 c++ 开发代码,为了更"C++",我将我的 char * 移动到字符串中。
顺便说一下,我确实有一些分配值的问题。
一旦我将 str 分配给 std::string,我的代码就会崩溃。
这是代码。
std::string str;
std::cout << "Friendlyn";
str.assign(LIBMTP_Get_Friendlyname(PulsDeviceMngr->device));
if(str.empty())
PulsDeviceMngr->devicename = "Not Defined";
else {
PulsDeviceMngr->devicename = str ;
str.clear();
}
我也尝试替换:
str.assign(LIBMTP_Get_Friendlyname(PulsDeviceMngr->device));
由
str = LIBMTP_Get_Friendlyname(PulsDeviceMngr->device);
LIBMTP_Get_Friendlyname可以返回 NULL 是没有定义友好名称。
我迷路了..这是我第一次在c ++下使用字符串感谢您的帮助
确保定义了友好名称,以便它不会返回 NULL。还要确保 LIBMTP_Get_Friendlynam() 返回类型为字符串或字符*。
您的评论说:
似乎它来自
NULL
值的事实,我试图assign
它。 但是我应该有一种方法来获取值并仅在 empte[原文如此]
你的问题说:
LIBMTP_Get_Friendlyname
可以返回NULL
没有定义Friendlyname
。
如果传递std::string::assign
指针(如 NULL
),它将尝试使用 C 字符串重载。C 字符串重载将从引用的数组中复制字符,直到达到空字符。但是你的代码告诉它 C 字符串位于地址 0,当取消引用时,将出现段错误。
解决方案是将""
返回到之前返回 NULL 的位置。
这将确保始终有一个字符串要assign
。
相关文章:
- 为"adjacent"变量赋值时出现问题
- C++中的赋值发生,尽管右侧出现异常
- 赋值运算符在我制作类模板时使代码崩溃
- 复制赋值构造函数中的aligned_alloc内存块在释放时崩溃
- C++初始化复制构造函数中的列表赋值,并在复制构造函数中崩溃
- 为结构字段赋值时程序崩溃
- C++ 赋值崩溃
- 在 malloc 之后为数组赋值会导致崩溃
- 类成员作为对另一个的引用:赋值运算符中的崩溃
- 赋值运算符在 xcode 4 中崩溃,在MSVS2010中运行良好
- C++程序在为指针的2D数组赋值后崩溃
- memset导致std::string赋值崩溃
- 向量赋值崩溃
- 给数组赋值时崩溃
- 通过不返回引用来防止下标操作符的赋值会导致运行时崩溃
- c++在使用类方法给成员赋值时每次都会崩溃
- visualstudio-当给太多动态分配的数组赋值时程序崩溃-C++
- 是否赋值代码会导致崩溃
- 将一个glm::vec3常量引用赋值给另一个glm::vec3时奇怪的崩溃
- 自定义复制赋值操作符使程序崩溃(c++)