草庐IT

BUFFER_SIZE

全部标签

c++ - 访问 Protocol Buffer 扩展字段

我正在使用C++中的ProtocolBuffer。我的消息只有一个扩展范围。我想在不知道他们的名字的情况下访问所有的扩展字段,只使用他们的号码。我该怎么做??messageBase{optionalint32id=1;extensions1000to1999;}extendBase{optionalint32id2=1000;}到目前为止,我已经获得了ExtensionRange。constgoogle::protobuf::Descriptor::ExtensionRange*rng=desc->extension_range(0);std::cerrstartend但我不知道如何获

c++ - JNI_CreateJavaVM : Buffer overrun if I throw an exception in case of failure

在C++项目中,我使用JNI调用API来启动JVM。我已经围绕JVM做了一些包装,因此我可以以面向对象的方式使用所有需要的部分。到目前为止效果很好。现在,如果JVM没有启动(JNI_CreateJavaVM返回值JNI_CreateJavaVM之后抛出异常,我遇到缓冲区溢出。如果我在没有JNI_CreateJavaVM调用的情况下引发异常,它会按预期工作。有人知道这里的问题是什么吗?或者如何调试?环境:Windows、VisualStudio2008JDK:jrockit27.6jdk16005,但也发生在SUNstockone上干杯多米尼克 最佳答案

c++ - 使用 std::array::size 实例化 std::array 时出错

示例代码test.cpp#include#includeintmain(){//OKconststd::arrayarray_int={42,1337};std::arrayarray_float_ok;//Errorconststd::arrayarray_string={"foo","bar"};std::arrayarray_float_error;return0;}使用g++4.8.4(Ubuntu14.04)编译g++-Wall-std=c++0xtest.cpp-otest给出如下错误信息test.cpp:Infunction‘intmain()’:test.cpp:14:

c++ - size_t 和内存分配

有这样一个类型std::size_t。它可用于描述对象的大小,因为它保证能够表达任何对象的最大大小(所以写成here)。但是,这是什么意思?我们实际上在内存中没有对象。那么这是否意味着这种类型可以存储一个整数,代表我们理论上可以使用的最大内存量?如果我尝试写类似的东西size_tmaxSize=std::numeric_limits::max();newchar[maxSize];我会得到一个错误,因为数组的总大小被限制为0x7fffffff。为什么?此外,如果我传递一个等于maxSize的非常量表达式,将抛出std::bad_array_new_length。如果我传递一个小于max

c++ - sizeof(size_t) 和 sizeof(ptrdiff_t) 什么时候可以不同?

什么时候可以sizeof(size_t)和sizeof(ptrdiff_t)有区别吗?有这方面的真实示例吗?注意,我知道所有标准都说这些类型是实现定义的。但是我知道的所有实现,sizeof(size_t)和sizeof(ptrdiff_t)等于。也许出于某些奇怪(或不太奇怪)的原因,它们可能会有所不同。看来,sizeof(ptrdiff_t)这不是一个非常有用的情况,因为指针运算对于大型数组来说非常有限。另一种情况,sizeof(ptrdiff_t)>sizeof(size_t)可能有点用处,因为所有指针减法都将在数组上定义(如果数组大于PTRDIFF_MAX,则指针减法将为所有远距离

c++ - Protocol Buffer : no notation for fixed size buffers?

因为我在this上没有得到答案问题我必须制作原型(prototype)并检查自己,因为我的数据集header需要固定大小,所以我需要固定大小的字符串。那么,是否可以在ProtocolBuffer中指定固定大小的字符串或字节数组?这在这里不是很明显,而且我对强制将固定大小的字符串放入header消息中感到有点难过。--即std::string('\0',128);如果不是,我宁愿使用#pragmapack(1)structheader{...};'编辑问题间接回答here.会回答,除了 最佳答案 protobuf在协议(protoco

c++ - boost::variant for boost::arrays of arbitrary size

我想本着的spirit创建一个boost::varianttypedefboost::variant,boost::array,boost::array,...>any_int_array;泛化为N作为模板的第二个值。换句话说,一个包含任意大小数组的boost::variant。这可能吗?请注意,在上面的示例中,boost::array是我的案例之一,但对于采用单个int的任何类,它都需要是一个可行的解决方案值作为模板参数。 最佳答案 既然你在谈论具有静态已知容量的类型,你就不能用一些模板元编程来解决这个问题吗?LiveonColi

c++ - 如何初始化 Protocol Buffer 中的重复元素?

假设我有这条消息。messageA{repeatedfloatw=1[packed=true];}如何在我的代码中初始化w?我还能做得更好吗?a=A()for(inti=0;i 最佳答案 a.w()或a.mutable_w()将返回google::protobuf::RepeatedField它提供了一些额外的选项。例如,您可以调用a.mutable_w()->Reserve(n)提前预分配空间,以避免每次大小加倍时重新分配的通常策略。您也可以使用Resize(n)其次是mutable_data()直接访问底层缓冲区,但这可能不会比

c++ - 多重继承 : size of class for virtual pointers?

给定代码:classA{};classB:publicvirtualA{};classC:publicvirtualA{};classD:publicB,publicC{};intmain(){cout输出:sizeof(D)8每个类都包含自己的虚指针,但不包含其任何基类的虚指针,那么,为什么class(D)的Size是8? 最佳答案 这取决于编译器的实现。我的编译器是VisualStdioC++2005。代码如下:intmain(){cout会输出sizeof(B):4sizeof(C):4sizeof(D):8B类只有一个虚指针

c++ - std::string::max_size() 作为静态成员

为什么max_size不是std::string的静态成员?这可以编译,但我觉得奇怪的是所有字符串共有的属性只能通过字符串的实例访问:std::size_tmax_size=std::string().max_size();为什么会这样实现? 最佳答案 Whyisn'tmax_sizeastaticmemberofstd::string?因为max_size返回值取决于字符串实例内部使用的分配器实例。 关于c++-std::string::max_size()作为静态成员,我们在Stac