c++ - 当我将字符串从 .mm 文件传递到 .cpp 文件时,程序编译得很好,但在运行时我在 Xcode 中收到错误“EXC_BAD_ACCESS”
问题描述
我的 .mm 文件 -
std::string argv([argumentString UTF8String]);
int x = obj.zmain(argumentCount,argv);
obj 是 ZMain 类型的对象。
我的 .cpp 文件 -
int ZMain::zmain(int argc,std::string argv) {
std::istringstream iss(argv);
std::string s;
char *paramArray[argc];
int i=0;
while ( getline( iss, s, ' ' ) ) {
strcpy(paramArray[i],s.c_str());
std::cout<<paramArray[i]<<std::endl;
i++;
}
return 0;
}
我有时在循环内,有时在循环之前,有时在循环之后收到错误“EXC_BAD_ACCESS”。会有什么问题?
解决方案
在 Objective-C 端使用NSArray<NSString *> *argv = [[NSProcessInfo processInfo] arguments]
,其中包含已解析的值(请参阅此问题 - Accessing command line arguments in Objective-C)。
然后std::vector<string>
在传递给 zmain.cpp 之前将其转换为(请参阅NSMutableArray 到 std::vector)。
推荐阅读
- java - 当我在android中使用自定义视图时崩溃
- php - 在 Nginx 中为 proxy_read_timeout 设置什么值以防止浏览器中的 WebSocket 超时
- ubuntu-16.04 - 将 Ubuntu 从 16.04 升级到 18.04 时出错,GCC-6-base
- php - 如果 MySql 字段为空白/空/无,如何禁用标题
- typescript - 反应原生,输入的表单值作为 null 从反应原生 Fetch 方法传递
- python - gem5中Python和C++之间如何传递System对象的clk_domain等属性?
- python - 创建内部类的实例
- sql - SQL Server - 将时间向上/向下舍入到 30 分钟间隔
- c# - C# 中的 OutOfMemory 异常
- javascript - 用 JS 去除引号以转换为 JSON 对象