草庐IT

shared_mem

全部标签

c - 为什么 memset、memchr 等内存函数在 string.h 中,而在 stdlib.h 中却没有另一个 mem 函数?

我想知道,为什么这样的功能:-memset-memmov-memchr-memcpy存在于string.h头文件中,但不存在于stdlib.h文件中,其中还有其他标准内存函数如动态内存分配:malloc、calloc、realloc、free。也许将它们合并到一个标题中会更好?你怎么看待这件事?我不明白,为什么一组内存函数与其他函数分开并存在于字符串头(string.h)中。 最佳答案 因为实际上string.h被定义为一个标准头文件,它声明了处理字符数组而不仅仅是字符串的函数。memcpy和memset等函数接受的参数被视为指向字

c - 为什么 memset、memchr 等内存函数在 string.h 中,而在 stdlib.h 中却没有另一个 mem 函数?

我想知道,为什么这样的功能:-memset-memmov-memchr-memcpy存在于string.h头文件中,但不存在于stdlib.h文件中,其中还有其他标准内存函数如动态内存分配:malloc、calloc、realloc、free。也许将它们合并到一个标题中会更好?你怎么看待这件事?我不明白,为什么一组内存函数与其他函数分开并存在于字符串头(string.h)中。 最佳答案 因为实际上string.h被定义为一个标准头文件,它声明了处理字符数组而不仅仅是字符串的函数。memcpy和memset等函数接受的参数被视为指向字

c++ - C++11 中 shared_ptr 的原子操作

通过阅读c++11草案n3242,第20.7.2.5节,看起来我们对shared_ptr进行了原子操作,这使我们能够对复杂结构进行无锁操作,而无需担心GC/内存泄漏。但是,我无法在GCC-4.7.0中成功使用它。我只是测试了以下程序#include#include#includestructX{intx;doubley;std::strings;};intmain(){std::shared_ptrx(newX);autop=std::atomic_load(&x);}它有编译器错误:c.cpp:13:33:error:nomatchingfunctionforcallto‘atomi

c++ - C++11 中 shared_ptr 的原子操作

通过阅读c++11草案n3242,第20.7.2.5节,看起来我们对shared_ptr进行了原子操作,这使我们能够对复杂结构进行无锁操作,而无需担心GC/内存泄漏。但是,我无法在GCC-4.7.0中成功使用它。我只是测试了以下程序#include#include#includestructX{intx;doubley;std::strings;};intmain(){std::shared_ptrx(newX);autop=std::atomic_load(&x);}它有编译器错误:c.cpp:13:33:error:nomatchingfunctionforcallto‘atomi

c++ - boost::shared_ptr<T> 和 boost::shared_ptr<const T> 是否共享引用计数?

关于boost::shared_ptr的陷阱有几个有趣的问题。s。其中之一是避免指向boost::shared_ptr的有用提示。和boost::shared_ptr到Derived类型的同一对象因为它们使用不同的引用计数并可能过早地销毁对象。我的问题:同时拥有boost::shared_ptr是否安全?和boost::shared_ptr指向T类型的同一对象,或者这会导致同样的问题吗? 最佳答案 绝对安全。以下代码示例:#include#includeintmain(int,char**){boost::shared_ptra(n

c++ - boost::shared_ptr<T> 和 boost::shared_ptr<const T> 是否共享引用计数?

关于boost::shared_ptr的陷阱有几个有趣的问题。s。其中之一是避免指向boost::shared_ptr的有用提示。和boost::shared_ptr到Derived类型的同一对象因为它们使用不同的引用计数并可能过早地销毁对象。我的问题:同时拥有boost::shared_ptr是否安全?和boost::shared_ptr指向T类型的同一对象,或者这会导致同样的问题吗? 最佳答案 绝对安全。以下代码示例:#include#includeintmain(int,char**){boost::shared_ptra(n

c++ - std::make_shared、std::unique_ptr 和移动构造函数

以下代码使用clang3.0/libc++编译:#includeclassFoo{public:Foo():mem_(newint(10)){}std::unique_ptrmem_;};intmain(){autofoo=std::make_shared();return0;}但是这个没有(std::string参数加了):#include#includeclassFoo{public:Foo(conststd::string&s):mem_(newint(10)){}std::unique_ptrmem_;};intmain(){autofoo=std::make_shared("

c++ - std::make_shared、std::unique_ptr 和移动构造函数

以下代码使用clang3.0/libc++编译:#includeclassFoo{public:Foo():mem_(newint(10)){}std::unique_ptrmem_;};intmain(){autofoo=std::make_shared();return0;}但是这个没有(std::string参数加了):#include#includeclassFoo{public:Foo(conststd::string&s):mem_(newint(10)){}std::unique_ptrmem_;};intmain(){autofoo=std::make_shared("

c++ - 分配给 std::shared_ptr 成员变量

我有一个类foo,与成员bar类型std::shared_ptr:classfoo{std::shared_ptrbar;/*otherstuffhere*/};在那个类(class)我想分配一个newint至bar.但是我不会写bar=newint();因为指针没有公共(public)赋值运算符。应该如何我这样做?我可以std::move或std::swap但这些似乎都不对。 最佳答案 bar=std::make_shared();是一种方法,特别是如果您希望保留赋值运算符的易处理性。

c++ - 分配给 std::shared_ptr 成员变量

我有一个类foo,与成员bar类型std::shared_ptr:classfoo{std::shared_ptrbar;/*otherstuffhere*/};在那个类(class)我想分配一个newint至bar.但是我不会写bar=newint();因为指针没有公共(public)赋值运算符。应该如何我这样做?我可以std::move或std::swap但这些似乎都不对。 最佳答案 bar=std::make_shared();是一种方法,特别是如果您希望保留赋值运算符的易处理性。