C++字符串数组追加的目标C++崩溃
Objective C++ Crash on C++ String Array Append
下面的Objective C++例程,如果我在OS X 10.11上的XCode 7.1中运行足够多,最终会在字符串append上崩溃。调试器向我显示,它每次都会在数字23处停止(试图附加数字23)。我想这与内存分配有关。我做错了什么?
调试器打开字符串类并阻塞下面的return语句。在另一个调试器窗口中,它显示(lldb),不管这意味着什么。
template <class _CharT, class _Traits, class _Allocator>
inline _LIBCPP_INLINE_VISIBILITY
basic_string<_CharT, _Traits, _Allocator>&
basic_string<_CharT, _Traits, _Allocator>::append(const basic_string& __str)
{
return append(__str.data(), __str.size());
}
这是我正在运行的代码,如果我运行该例程足够多次,它似乎会导致崩溃。(这只在猴子测试期间出现,我在Objective C/C++应用程序中点击了"设置"菜单足够多次,它触发了以下功能足够多次,导致崩溃。)
std::string Minutes[] = {};
std::string s = "";
for (int i = 1; i<= 59; i++) {
s = std::to_string(i);
if (s.length() < 2) {
s = "0" + s;
}
s = ":" + s;
Minutes->append(s);
}
这可能是一个简单的老C++问题,也许不是一个目标C++问题。或者,也许这是苹果的一个bug?
请注意,我用以下更改进行了一个实验,在尝试了3次100次后,它从未崩溃:
std::string Minutes[] = {};
std::string s = "";
for (int i = 1; i<= 59; i++) {
//s = std::to_string(i);
/*
if (s.length() < 2) {
s = "0" + s;
}
s = ":" + s;
*/
//[Minutes->append(s);
Minutes->append("01");
}
此外,以下代码补丁也运行了3次,最多100次,没有问题:
const std::string Days[] = {"Su","M","T","W","Th","F","Sa"};
std::string Hours[] = {};
for (int i = 1; i <= 12; i++) {
Hours->append(std::to_string(i));
}
如果您打算在Minutes中保留空字符串,请执行以下
std::string Minutes[] = {""};
然后Minutes->append(s);
将把s
附加到Minutes[]数组内的第一个空字符串。
更新日期:
首先,您必须创建一个字符串的动态数组(std::vector),以防您不知道数组的大小,并使用index从std::vector访问字符串。
// implies that you used #include <string> and #include <vector>
std::vector<std::string> Minutes;
Minutes.push_back(s)
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++A*算法并不总是在路径中具有目标节点
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 为测试目标创建具有不同源文件夹的文件
- 使用源向量作为目标
- 是否可以用C++/WinRT将windows 10.0.14393作为目标
- 在 CMake 中为每个目标设置编译器/链接器标志
- qmake:检测目标位宽(32 位或 64 位)
- 如何在 CMake 中对目标依赖项进行分组?
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 如何为包含头文件的目标编写生成文件?
- 线性优化目标函数中的绝对值
- 制作文件:没有规则来制定目标:如何设置正确的规则?
- 字符串函数在目标C++上运行时C++返回空
- 如何定义自定义生成配置类型,其中通常是.exe的目标改为 DLL
- 请求最简单的 OpenMP 目标 GPU 示例
- LLVM 编译:目标的配方 '../lib/IR/Release+Asserts/Intrinsics.gen.tmp' failed
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- 我应该如何在没有变量的情况下将相同的参数传递给 CMAKE 中的多个目标?
- CMake 错误 - 目标 foo INTERFACE_SOURCES属性包含在源目录中以前缀为前缀的路径