草庐IT

LONG_PTR

全部标签

c++ - 这是 "*ptr++ = *ptr + a"未定义的行为吗?

好吧,我并不是真的很需要这个答案,我只是好奇。像*ptr++=a这样的表达式是完全有效的,因为我们正在操作两个对象ptr和*ptr但是如果我写*ptr++=*ptr+a它仍然有效吗?例如考虑以下片段:intmain(void){inta[]={5,7,8,9,2};int*p=a;*p++=76;/*alteringthefirstelement*/*p++=*p+32;/*alteringthesecondelement*/p=a;inti;for(i=0;i我认为表达式*p++=*p+32;没有什么可担心的,但我不确定所涉及的序列点。 最佳答案

c++ - 为什么我们不能将 "="用于 shared_ptr 或 unique_ptr?

这个问题在这里已经有了答案:Whydoesn'tshared_ptrpermitdirectassignment(5个答案)关闭5年前。我发现语法有编译错误。std::shared_ptrp=newint(5);3141E:\temprory(deleteitifulike)\1208.cpp[Error]conversionfrom'int*'tonon-scalartype'std::shared_ptr'requested不过没关系std::shared_ptrp(newint(5));与unique_ptr相同;但不知道为什么要禁止。

c++ - 为什么我不能从函数返回 Boost::Scoped_ptr?

所以我尝试围绕boost.extension函数创建一些包装器来创建类。所以我创建了一个函数:templateboost::scoped_ptrget_class(shared_library&lib,std::stringclass_name,ConstructorTypevalue){map>lib_factories=get_factories(lib);returnboost::scoped_ptrlib_class(lib_factories[class_name].create(value));}调用:templatemap>get_factories(shared_lib

c++ - 为什么在 C 或 C++ 中使用 "long long"可能是一件坏事?

为什么在C或C++中使用“longlong”可能是一件坏事?前几天我正在编译一个运行时库,在代码中它检查long是否为64位,如果不是,它使用longlong。但除此之外,它还会发出#warning“usinglonglong”。我想不出任何理由将“longlong”作为警告,除非它是开发人员遗留下来的调试问题。谢谢陈茨 最佳答案 据我所知,longlong目前仅在C99中是标准的。它也将是C++0x中的一种类型,但大多数现代编译器应该已经支持它。但是,对于固定大小的整数,可以使用C99header,或者在C++中

c++ - shared_ptr 空指针和赋值

我想像使用实际指针一样使用shared_ptr。我希望能够做类似的事情shared_ptra;a=newint(5);a=0;shared_ptrfoo()return0;但它不是默认实现的。我通过添加更改了boost库的shared_ptr的源代码templatevoidoperator=(inti){reset(i);}templatevoidreset(inti){this_type(i).swap(*this);}templatevoidoperator=(Y*p){reset(p);}shared_ptr(inti):px(0),pn(){}唯一的问题是如果我做a=-1;它会

c++ - 将 std::shared_ptr 转换为 QPointer

我们的应用程序设计得非常糟糕-它同时使用了std::shared_ptr和QObject父子关系来管理我们的一些对象。当QObject::~QObject时,这会导致段错误删除其子对象然后shared_ptr也尝试删除它。我们讨论过这个问题,但目前没有办法轻松解决这个问题,所以在我们解决它之前,我需要使用一些肮脏的技巧。现在我有一个std::shared_ptrgetMyObjectPtr()功能。我需要将结果放入QPointer-QPointers是弱指针,仅指示它们管理的QObject是否已删除。我无法以任何方式更改该功能,否则会破坏整个应用程序。我尝试了一些自定义解除分配器的ha

c++ - 加倍到 `unsigned long long` 会导致内存(堆栈?)损坏

以下代码有什么问题(崩溃):#include#includevoidfoo(std::stringstr,unsignedlonglongval){std::coutVisualStudio2012/调试/Win32它在x64中工作,如果我们将unsignedlonglong更改为longlong甚至unsignedlong此代码片段崩溃。在其他情况下,函数参数的地址会发生变化。我怀疑它与将double转换为unsignedlonglong的_stol2有关 最佳答案 SubmittedtoMicrosoft作为错误(已接受)

c++ - 在非 boost 线程中使用 boost::thread_specific_ptr

我正在阅读thedocumentationsectionforboost::thread_specific_ptr,并尝试解析这段:Note:onsomeplatforms,cleanupofthread-specificdataisnotperformedforthreadscreatedwiththeplatform'snativeAPI.Onthoseplatformssuchcleanupisonlydoneforthreadsthatarestartedwithboost::threadunlessboost::on_thread_exit()iscalledmanually

c++ - 不从源函数返回的类中的 auto_ptr

考虑以下代码:#includestructA{std::auto_ptri;};AF(){Aa;returna;}intmain(intargc,char**argv){Aa=F();return0;}编译时我收到一个编译错误,(参见here):error:nomatchingfunctionforcallto‘A::A(A)’Aa=F();^据我了解,A::A(A)甚至不允许存在,那么编译器为什么要请求它呢?其次,为什么不使用RVO?如果是因为std::auto_ptr不能从函数中返回,为什么下面会编译运行?#includestd::auto_ptrF(){std::auto_ptr

c++ - 在调试器中查看 C++ shared_ptr 内容

在xcode中调试C++代码,有没有办法查看std::shared_ptr的内容?如果我查看“监视”窗口,我只能看到__ptr=(element_type*)0xa66945c在即时窗口中写'pomyPointer'也只打印内存地址。我还尝试了“查看“__ptr_”的内存”和“查看“*__ptr_”的内存”,但它只让我看到了原始内存,没有实际可读的文本任何人都可以建议一种方法来查看我有指针的对象吗? 最佳答案 LLDB中的fr命令有一个--ptr-depth参数,在这些情况下可以提供帮助。例如,尝试在直接Pane中键入以下内容:fr