草庐IT

VARIABLE_SIZE_STRUCT

全部标签

对象指针的 C++ vector - max_size()

我有一个类苹果classapples{private:doublex;doubley;doublez;public://somemethods};我想将指向apples对象的指针存储在一个vector中。我这样做是为了在任何文件中创建任何对象并在任何文件中使用任何对象。我使用以下代码来确定我可以存储在该vector中的最大指针数int_tmain(intargc,_TCHAR*argv[]){vectormyvector;cout它给了我:1073741823现在,我的问题是我真的可以在该vector中存储1073741823个指针吗,或者这是vector的内存限制(即10737418

c++ - 错误 : forward declaration of struct

我收到错误:proprietario.cpp:36:error:invaliduseofincompletetype‘structMotocicleta’proprietario.h:12:error:forwarddeclarationof‘structMotocicleta’摩托车.h:#ifndef__MOTOCICLETA__#define__MOTOCICLETA__#include#include"veiculo.h"#include"proprietario.h"usingnamespacestd;classProprietario;classMotocicleta:pu

c++ - 为什么我得到 "Invalid Allocation Size: 4294967295 Bytes"而不是 std::bad_alloc 异常?

我写了下面一段代码来为一个数组分配内存:try{intn=0;cin>>n;double*temp=newdouble[n];...}catch(exception&e){cout当然,我正在检查n的负值等。但是当我输入一些超过536*(10^6)的大数字时,我没有收到错误分配异常,而是收到“无效分配大小:4294967295字节”崩溃。例如我输入n=536*(10^6)-->bad-allocexception我输入n=537*(10^6)-->分配大小无效:4294967295字节-->崩溃知道为什么会这样吗? 最佳答案 调用n

c++ - 为什么 std::hex 会导致内存损坏 vector.size()?

我有以下代码:vectortest=GetMemoryAddresses();cout打印以下结果:Size:18MemoryAddress:fc06a0MemoryAddress:13a70f0MemoryAddress:36c78c1MemoryAddress:3da0ea0MemoryAddress:3e21b80MemoryAddress:c0a6881MemoryAddress:c747690MemoryAddress:c748b98MemoryAddress:c74a1b8MemoryAddress:c74ce10MemoryAddress:c750c78MemoryAdd

c++ - 如何在 C++ 中解释 "const int *const & variable"

当一个人将两个变量别名为inta;constint&b=a;这两个变量实际上是同一事物,因此应用于变量a的任何更改也会应用于变量b。然而,当用指针完成相同的技巧时,它似乎不会以相同的方式工作,如以下程序所示:#includeintmain(void){int*a=(int*)0x1;constint*const&b=a;//Nowbshouldbeanaliastoa.a=(int*)0x2;//Thisshouldchangebto0x2.std::cout现在变量a似乎根本不是变量b的别名,但为什么呢? 最佳答案 constin

c++ - 我真的需要返回 Type::size_type 吗?

我经常有一些类,它们大多只是一些STL容器的包装器,如下所示:classFoo{public:typedefstd::vectorVec;typedefVec::size_typesize_type;constVec&GetVec(){returnvec_;}size_typesize(){returnvec_.size()}private:Vecvec_;};我不太确定返回size_type。通常,某些函数会调用size()并将该值传递给另一个函数,另一个函数将使用它并可能传递它。现在每个人都必须包含那个Fooheader,虽然我实际上只是传递一些大小值,无论如何它应该只是unsig

c++ - 表达式 "variable, variable = value;"

我一直在查看一些MFC代码,我遇到了这个表达式。它在OnInitDialog()函数中,看起来不像是特定于MFC的。变量有一些名字,值为0。intvolatilesomething,somethingElse;//thiswasglobalsomething,somethingElse=0;//thiswasinsidethefunction这在C++中有意义吗?我知道逗号运算符是如何工作的,尽管在像这里这样的自由形式中它应该是分隔表达式。变量名也是表达式吗?这段代码确实可以编译,那么它是如何工作的呢? 最佳答案 这可能是程序中的一

c++ - size_t 和 offset_t 的使用指南?

这可能是一个C++101问题:我很好奇使用size_t和offset_t的指南是什么,例如它们用于什么情况,它们不用于什么情况,等等。我没有做过很多可移植的编程,所以我通常只使用int或unsignedint这样的东西用于数组大小、索引等。但是,我发现最好尽可能使用这些更标准的typedef,所以我想知道如何正确地做到这一点。作为后续问题,对于使用VisualStudio2008在Windows上进行开发,我应该在哪里寻找实际的typedef?我发现size_t在VS安装目录中的许多header中定义,所以我不确定我应该使用哪一个,而且我找不到offset_t任何地方。

c++ - size of datatype 和 sizeof(data type) 的区别

我在学习C++时遇到了以下问题。我只是一个初学者,我很困惑。sizeof()函数不应该返回数据类型的大小吗?为什么数据对象的大小可能与其sizeof()不同?我不明白答案的解释。假设在一台假想的机器中,char的大小是32位。sizeof(char)会返回什么?一)4b)1c)依赖于实现d)机器相关答案:b说明:标准不要求char为8位,但确实要求sizeof(char)返回1。 最佳答案 sizeof运算符以bytes为单位生成类型的大小,其中字节定义为char的大小。所以根据定义,sizeof(char)始终为1,无论bitsc

c++ - 从 std::size_t* 到 long unsigned int* 的无效转换

在raspberrypi-arv7l上,我正在编译以下C++程序#includevoidfun(unsignedlongint*i){std::cout对于上面的代码,我收到以下错误:a.cpp:Infunction'intmain()':a.cpp:12:9:error:invalidconversionfrom'std::size_t*{akaunsignedint*}'to'longunsignedint*'[-fpermissive]fun(&i);^~a.cpp:3:6:note:initializingargument1of'voidfun(longunsignedint*