草庐IT

new_size

全部标签

c++ - 在哪里可以找到 GNU stdc++ operator new 的源代码?

我在这里试过:http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html我找到了new.h,但没有找到实现它的代码。谢谢 最佳答案 libstdc++相关源码可在线浏览here.您可能想阅读this. 关于c++-在哪里可以找到GNUstdc++operatornew的源代码?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

c++ - 在从放置 new 获得的指针上使用 operator delete 的合法性

我很确定这段代码应该是非法的,因为它显然不起作用,但它似乎是C++0xFCD允许的。classX{/*...*/};void*raw=malloc(sizeof(X));X*p=new(raw)X();//accordingtothestandard,theRHSisaplacement-newexpression::operatordelete(p);//definitelywrong,perlitb'sanswerdeletep;//legal?Ihopenot也许你们中的一位语言律师可以解释标准是如何禁止这样做的。还有数组形式:classX{/*...*/};void*raw=m

c++ - Placement-new 是否引入了序列点?

考虑以下代码行:new(p++)T();如果构造函数T()抛出异常,是否保证p已经自增? 最佳答案 来自5.3.4[expr.new](引自n3242):11Thenew-placementsyntaxisusedtosupplyadditionalargumentstoanallocationfunction.Ifused,overloadresolutionisperformedonafunctioncallcreatedbyassemblinganargumentlistconsistingoftheamountofspace

c++ - Visual Studio 2010 专业版 : Cannot find include file "new.h"

所以我刚刚获得了VisualStudio2010Professional,我创建了一个简单的mfc应用程序,添加了一些代码并且没有更改任何项目设置。当我尝试编译它时,我得到了这个错误:1>------Buildstarted:Project:cadmenu,Configuration:ReleaseWin32------1>Buildstarted10/15/20133:44:26PM.1>InitializeBuildStatus:1>Touching"Release\cadmenu.unsuccessfulbuild".1>ClCompile:1>stdafx.cpp1>C:\Pr

c++ - C++11 中::new 的线程安全

我确信,在实践中,::new的使用是线程安全的。我的问题是标准的哪一部分提供了这种保证,如果有的话?这是一个约定吗?这是否标准为实现提供了很大的自由度(例如关于每种数据类型大小的相对宽松的限制)以支持各种硬件?我希望C++11标准中只有一行明确指定“::new的实现必须是线程安全的”。我也很想看到一些关于operatornew重载的线程安全的标准术语。我想它们也需要要求是线程安全的,但这些函数也不属于const=>线程安全(在C++11中)的全面保证。p>谢谢! 最佳答案 我相信这是由C++11标准隐式保证的。如果不是,则使用ope

c++ - OpenCV 错误 : Assertion failed (size. width>0 && size.height>0) 简单代码

我正在尝试运行这个简单的OpenCV程序,但出现了这个错误:OpenCVError:Assertionfailed(size.width>0&&size.height>0)inimshow,file.../opencv/modules/highgui/src/window.cpp,line276代码:#include#includeusingnamespacestd;intmain(){cout这个错误的原因是什么? 最佳答案 此错误表示您正在尝试显示空图像。当你用imshow加载图片时,这通常是由于:您的图片路径错误(在Windo

c++ - 为什么 new[-1] 会产生 segfault,而 new[-2] 会抛出 bad_alloc?

我尝试通过将一些否定参数传递给new[]来测试bad_alloc异常。当传递小的负数时,我得到了我所希望的-bad_alloc。但是,当传递-1时,我可以看到我的对象被构​​造了数千次(我在构造函数中打印静态计数器)并且应用程序因段错误而终止。new[]将有符号整数转换为size_t,所以-1是size_t和-2是最大值-1以此类推。那么为什么new[]在接收到一个巨大的数字时会抛出异常,但在接收到size_t的最大值时会尝试分配呢?new[]的1111...1和1111...0有什么区别?:)提前致谢! 最佳答案 这是我的猜测:在

c++ - std::u16string、std::u32string、std::string、length()、size()、码点和字符

我很高兴在C++11中看到std::u16string和std::u32string,但我想知道为什么没有std::u8string来处理UTF-8的情况。我的印象是std::string是为UTF-8设计的,但它似乎做得不太好。我的意思是,std::string.length()是否仍然返回字符串缓冲区的大小而不是字符串中的字符数?那么,如何为新的C++11类定义标准字符串的length()方法?它们是否返回字符串缓冲区的大小、代码点数或字符数(假设代理对是2个代码点,但只有一个字符。如果我错了,请纠正我)?那么size();它不等于length()吗?见http://en.cppr

c++ - 在数组迭代器中使用 size_t

我最近了解到,引入size_t是为了帮助面向future的代码防止native位数增加和可用内存增加。具体的使用定义好像是关于存储某个东西的大小,一般是数组。我现在一定想知道这种future的证明应该走多远。如果下一个迭代数组的任务使用unsignedint作为索引数组,那么使用面向future和适当大小的size_t定义数组长度当然是没有意义的:void(double*vector,size_tvectorLength){for(unsignedinti=0;i事实上,在这种情况下,我可能希望严格的语法应该将unsignedint上转换为关系运算符的size_t。这是否意味着迭代器变

c++ - 否定 size_t (即 `-sizeof(struct foo)` ))会发生什么?

我正在处理一些包含表单表达式的代码-(sizeof(structfoo))即size_t的否定,我不清楚C和C++标准对编译器的要求是什么。具体来说,通过查看这里和其他地方,sizeof返回类型为size_t的无符号整数值。在否定无符号整数时,我找不到指定行为的任何明确引用。有没有,如果有,是什么?编辑:好的,所以关于无符号类型的算术有一些很好的答案,但不清楚这实际上是否如此。当这否定时,它是对无符号整数进行操作,还是转换为有符号类型并对其进行处理?从标准中期望的行为是“想象它是相似幅度的负数,然后对无符号值应用'溢出'规则”? 最佳答案