草庐IT

number_placement

全部标签

android - TelephonyManager.getLine1Number() 失败?

我想获取安卓设备的电话号码。我使用此代码:TelephonyManagertm=(TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);StringphoneNumber=tm.getLine1Number();在我的手机(HTCWildfire)上,我无法获取电话号码-我得到的只是空字符串。如果我在模拟器上运行代码,通常会显示电话号码。如果我转到设置=>关于电话=>电话身份->电话号码,电话号码是“未知”。问题出在哪里?我的SIM卡有问题吗?

c++ - 与 memset 不同,placement new 能否存活优化?

所以我真的很想知道它能否在GCC和clang采用的激进优化策略中幸存下来。考虑以下示例:void*clean(void*pointer,std::size_tsize)noexcept{returnnew(pointer)char[size]{};}voiddoStuff(){//...clean(pointer,size);//...}我可以信任它清理敏感数据的任务吗? 最佳答案 我不认为优化可以在这里对你耍任何花招。在这种情况下,标准要求值初始化:new(pointer)char[size]{},因此在此调用后pointer指向

c++ - 与 memset 不同,placement new 能否存活优化?

所以我真的很想知道它能否在GCC和clang采用的激进优化策略中幸存下来。考虑以下示例:void*clean(void*pointer,std::size_tsize)noexcept{returnnew(pointer)char[size]{};}voiddoStuff(){//...clean(pointer,size);//...}我可以信任它清理敏感数据的任务吗? 最佳答案 我不认为优化可以在这里对你耍任何花招。在这种情况下,标准要求值初始化:new(pointer)char[size]{},因此在此调用后pointer指向

c++ - 我可以使用placement new 来重置shared_ptr 中的对象吗?

假设我有一个类。classBigData{...};typedefboost::shared_ptrBigDataPtr;然后我做:BigDataPtrbigDataPtr(newBigData());稍后在我完成我的对象之后,我确信该对象没有其他用户。执行以下操作是否安全:bigDataPtr->~BigDataPtr();new(&*bigDataPtr)BigData;这会让我在没有任何额外分配的情况下重置对象吗? 最佳答案 有几种方法可以解决这个问题。您可以使用placementnew,这可以保证是安全的,原因有两个:您已经

c++ - 我可以使用placement new 来重置shared_ptr 中的对象吗?

假设我有一个类。classBigData{...};typedefboost::shared_ptrBigDataPtr;然后我做:BigDataPtrbigDataPtr(newBigData());稍后在我完成我的对象之后,我确信该对象没有其他用户。执行以下操作是否安全:bigDataPtr->~BigDataPtr();new(&*bigDataPtr)BigData;这会让我在没有任何额外分配的情况下重置对象吗? 最佳答案 有几种方法可以解决这个问题。您可以使用placementnew,这可以保证是安全的,原因有两个:您已经

c++ - 通过placement-new手动构造一个平凡的基类

小心,我们正在绕过巨龙的巢穴。考虑以下两个类:structBase{std::stringconst*str;};structFoo:Base{Foo(){std::cout如您所见,我正在访问一个未初始化的指针。还是我?假设我只使用trivial的Base类,只不过是(可能嵌套的)指针包。static_assert(std::is_trivial{},"!");我想分三步构造Foo:为Foo分配原始存储通过placement-new初始化一个适当放置的Base子对象通过placement-new构造Foo。我的实现如下:std::unique_ptrmakeFooWithBase(s

c++ - 通过placement-new手动构造一个平凡的基类

小心,我们正在绕过巨龙的巢穴。考虑以下两个类:structBase{std::stringconst*str;};structFoo:Base{Foo(){std::cout如您所见,我正在访问一个未初始化的指针。还是我?假设我只使用trivial的Base类,只不过是(可能嵌套的)指针包。static_assert(std::is_trivial{},"!");我想分三步构造Foo:为Foo分配原始存储通过placement-new初始化一个适当放置的Base子对象通过placement-new构造Foo。我的实现如下:std::unique_ptrmakeFooWithBase(s

c++ - Placement new 的返回值与其操作数的强制转换值之间是否存在(语义)差异?

placementnew的返回值与其操作数的强制转换值之间是否存在(语义)差异?structFoo{...};charbuffer[...];Foo*a=new(buffer)Foo;Foo*b=reinterpret_cast(buffer);a和b有什么不同吗?编辑:根据DaBler的评论,如果使用const/reference成员,这个问题表明存在差异:Placementnewandassignmentofclasswithconstmember所以,我的一点更新问题:a和b是否有任何不同,如果Foo没有const或引用成员? 最佳答案

c++ - Placement new 的返回值与其操作数的强制转换值之间是否存在(语义)差异?

placementnew的返回值与其操作数的强制转换值之间是否存在(语义)差异?structFoo{...};charbuffer[...];Foo*a=new(buffer)Foo;Foo*b=reinterpret_cast(buffer);a和b有什么不同吗?编辑:根据DaBler的评论,如果使用const/reference成员,这个问题表明存在差异:Placementnewandassignmentofclasswithconstmember所以,我的一点更新问题:a和b是否有任何不同,如果Foo没有const或引用成员? 最佳答案

c++ - 在附加之前将 "number 0"转换为 char

为什么在使用string::operator+将其附加到字符串之前,我需要将number0显式转换为char?usingnamespacestd;intmain(){strings="";s+=65;//nocompileerrors+=(char)0;//requiresexplicitcast//s+=0;//compileerrorreturn0;}更新澄清:我的目标是将一个字节(包含任何值,包括零)附加到现有的字节数组。 最佳答案 因为s+=0对于以下+=的重载运算符不明确string&operator+=(constcha