草庐IT

malloc_ptr_t

全部标签

python - Boost.Python:如何公开 std::unique_ptr

我对boost.python还很陌生,并试图将函数的返回值公开给python。函数签名如下所示:std::unique_ptrsomeFunc(conststd::string&str)const;在python中调用函数时,出现如下错误:TypeError:Noto_python(by-value)converterfoundforC++type:std::unique_ptr>我在python中的函数调用如下所示:a=mymodule.MyClass()a.someFunc("somestringhere")#errorhere我试图公开std::unique_ptr但无法让它工作

android - Android Logcat 中的 GC_FOR_MALLOC、GC_EXPLICIT 和其他 GC_* 是什么意思?

如果您查看Android日志,您可能会看到很多此类内容。它们是什么意思,知道这些可能有助于我们更好地分配内存。例子:28470dalvikvmDGC_FOR_MALLOCfreed665objects/239992bytesin71ms28470dalvikvmDGC_FOR_MALLOCfreed673objects/240288bytesin87ms21940dalvikvmDGC_EXPLICITfreed4802objects/185320bytesin78ms28470dalvikvmDGC_FOR_MALLOCfreed666objects/240536bytesin63m

c++ - 通过传递指针的地址来初始化 std::unique_ptr

我正在创建一个与某些WindowsAPI代码互操作的类,现在我必须初始化的指针之一是通过调用初始化它的native函数来完成的。我的指针是std::unique_ptr类型,带有一个自定义删除器,它调用提供的WinAPI删除器函数,但是我不能将带有&地址运算符的unique_ptr传递给init函数.为什么?我创建了一个示例来演示我的问题:#includestructfoo{intx;};structcustom_deleter{};voidinit_foo(foo**init){*init=newfoo();}intmain(){std::unique_ptrfoo_ptr;init

c++ - 通过模板中的成员函数指针对 shared_ptr 的成员函数调用

这是一个模板函数,它接受一个指针(或类似对象的指针)和一个成员函数:templateintexample(Ptrptr,MemberFunctorfunc){return(ptr->*func)();}如果与普通指针一起使用时有效:structC{intgetId()const{return1;}};C*c=newC;example(c,&C::getId);//Worksfine但它不适用于智能指针:std::shared_ptrc2(newC);example(c2,&C::getId);错误信息:error:C2296:'->*':illegal,leftoperandhasty

c++ - 为什么 Malloc() 关心边界对齐?

我听说malloc()根据分配的类型对齐内存。例如,来自UnderstandingandUsingCPointers一书:Thememoryallocatedwillbealignedaccordingtothepointer'sdatatype.Foreexample,afour-byteintegerwouldbeallocatedonanaddressboundaryevenlydivisiblebyfour.如果我跟随,这意味着int*integer=malloc(sizeof(int));将分配在可被四整除的地址边界上。即使没有在malloc上强制转换(int*)。我在一个聊

c++ - 传递 const shared_ptr<T>& 而不是 shared_ptr<T> 作为参数

我已经阅读了大量关于应用程序中涉及智能指针时的性能问题的讨论。常见的建议之一是将智能指针作为const&而不是拷贝传递,如下所示:voiddoSomething(std::shared_ptro){}对voiddoSomething(conststd::shared_ptr&o){}但是,第二个变体实际上不是破坏了共享指针的目的吗?我们实际上在这里共享共享指针,因此如果由于某些原因指针在调用代码中被释放(考虑可重入性或副作用),则const指针将变为无效。共享指针实际上应该防止的情况。我知道const&节省了一些时间,因为不涉及复制,也没有锁定来管理引用计数。但代价是代码的安全性降低了

c++ - 在 std::shared_ptr 上使用 .reset() 是否会删除所有实例

我是shared_ptr的新手,我正在尝试找出.reset()函数的确切功能。#include#includeusingnamespacestd;classSomeClass{};intmain(){shared_ptrsp(nullptr);//dosomestuff,spnowhas10co-ownerscout会输出100所以自从我使用了重置功能后,所有实例都从内存中删除了吗?如,我刚刚用sp消除了任何可能的内存泄漏吗?显然这是我快速编造的一个玩具示例,如果有任何错误,请见谅。跟进情况:shared_ptrreturnThis(){shared_ptrsomeObject(new

c++ - 是否应允许 std::unique_ptr<void>

这是一个非常简单的问题。考虑以下代码:#include#includetypedefstd::unique_ptrUniqueVoidPtr;intmain(){UniqueVoidPtrp(newint);return0;}使用以下命令g++-std=c++0x-oprogfile.cpp用cygwin(g++4.5.3)编译就可以了。但是,使用microsoft编译器(VS2010或2013)编译时出现此错误:C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC\INCLUDE\memory(2067):errorC2070:'void

c++ - unique_ptr 线程安全吗?

unique_ptr线程安全吗?下面的代码不可能两次打印相同的数字吗?#include#include#include#includeusingnamespacestd;intmain(){unique_ptrwork;threadt1([&]{while(true){constunique_ptrlocalWork=move(work);if(localWork)printf("thread1:%d\n",*localWork);this_thread::yield();}});threadt2([&]{while(true){constunique_ptrlocalWork=mov

c++ - 包含 malloc 声明的头文件的名称是什么?

包含C和C++中malloc()函数声明的头文件的名称是什么? 最佳答案 它在stdlib.h(C)和cstdlib(C++)中。一般来说,对于此类问题,只需尝试在google上查找:“c++function”。大多数情况下,对我来说,第一次点击会指向cplusplus.com,其中包含对标准内容的完整引用。 关于c++-包含malloc声明的头文件的名称是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflo