草庐IT

new_size

全部标签

c++ - 为什么 new 能够创建一个字符串数组?

我见过以下列方式使用字符串数组的代码。string*pointer=newstring[runtimeAmmount];我还看到过如下访问字符串中的单个字符。stringaString="this";charbString[]="that";bString[3]=aString[3];以上将导致bString等于“thas”。这表明字符串实际上是指向第一个字符位置的指针。然而,字符串仍然具有访问为“string.c_str()”的成员函数,这意味着它本身作为一个对象并不遵循指针的规则。这一切是如何运作的?注意:我原来的问题是不同的,但我把它打出来了。如果有人仍然可以回答我原来的问题只是

c++ - 如果我将 free 与 new 一起使用或将 delete 与 malloc 一起使用,结果会怎样?

是编译错误还是运行时错误?下面的代码可以编译!classBase{voidg();voidh();};intmain(){Base*p=newBase();free(p);return0;}但是,如果我这样声明类Base,它就不能用虚函数编译了classBase{virtualvoidg();voidh();};无论函数是否为虚函数,下面的代码都可以一直编译。classBase{voidg();voidh();};intmain(){Base*p=(Base*)malloc(sizeof(Base));deletep;return0;} 最佳答案

c++ - "new int[];"是做什么的?

这行代码做了什么?newint[];根据我的编译器反汇编(VC++2012),它的作用与:newint[0];但它是C++标准规定的吗?这是合法的指示吗? 最佳答案 表达式newint[]对C++11无效(我没有检查C++14)。对于单个[],语法需要一个(隐式转换为)整数类型expression在方括号之间,表示所需的数组大小。请注意,此大小不必是常量:在抽象的底层,这就是您在C++中分配动态数组的方式。C++11(通过N3290最终草案)§5.3.4/6:”Everyconstant-expressioninanoptr-new

对象指针的 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++ - 为什么我得到 "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++ - 我真的需要返回 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++ - std::set_new_handler 如何提供更多可用内存?

来自std::set_new_handlernew-handler函数是分配函数在内存分配尝试失败时调用的函数。它的预期目的是三件事之一:提供更多可用内存终止程序(例如通过调用std::terminate)抛出类型为std::bad_alloc或派生自std::bad_alloc的异常下面的重载能保证什么吗?void*operatornew(std::size_tsize)throw(std::bad_alloc){while(true){void*pMem=malloc(size);if(pMem)returnpMem;std::new_handlerHandler=std::set

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