车载QNX系统跑以下代码,为什么打印是-1 std::vector<uint8_t>* renderArray= new std::vector<uint8_t>(); printf("renderArray->max_size(): %d\n",renderArray->max_size());
时间: 2024-04-06 22:33:56 浏览: 20
在QNX中,`std::vector`的`max_size()`函数返回的是该类型对象最多可以包含的元素个数,而不是最大可用内存大小。这个返回值取决于机器的架构,类型的大小以及可用内存的大小等因素。在你的代码中,你没有给`std::vector`指定初始容量,因此其`max_size()`函数返回的是该类型对象最多可以包含的元素个数。由于你在QNX中运行该代码,可能是因为QNX的限制,导致你的`std::vector`对象的最大容量为0,因此当你执行`renderArray->max_size()`时,它返回的是0,而不是你期望的值。因此,当你执行`printf`语句时,它输出的是-1,这是`printf`函数使用%d格式标识符输出0的结果。
相关问题
void start(){ std::string dtcClientUrl = FDB_URL_SVC; dtcClientUrl.append("com.bosch.cm.qnx.notification-center"); bool ret = connect(dtcClientUrl.c_str()); }
这段代码是一个名为`start`的函数,返回类型为空(`void`)。
函数内部首先声明并初始化了一个名为`dtcClientUrl`的`std::string`变量,其值为`FDB_URL_SVC`。
接下来,代码使用`dtcClientUrl.append("com.bosch.cm.qnx.notification-center")`将字符串`"com.bosch.cm.qnx.notification-center"`追加到`dtcClientUrl`后面。
然后,代码声明并初始化了一个名为`ret`的布尔变量,并调用了`connect(dtcClientUrl.c_str())`函数,并将`dtcClientUrl.c_str()`作为参数传递给该函数。
需要注意的是,这段代码中涉及到了一些特定的类和函数,例如`std::string`、`FDB_URL_SVC`和`connect()`。具体的实现细节可能需要查看更多的上下文信息才能提供更准确的解释。如果您有任何其他问题,请随时提问。
QNX支持std::thread吗
是的,QNX操作系统支持C++11标准库,因此也支持std::thread。您可以在QNX平台上使用标准C++线程库来实现多线程编程。需要注意的是,您需要在编译时启用C++11支持。您可以使用以下命令来编译支持C++11的代码:
```
qcc -Vgcc_ntoarmv7le -std=c++11 source.cpp -o output
```
其中,-std=c++11参数启用了C++11支持。