草庐IT

weak_intrusive_pointer

全部标签

objective-c - 委托(delegate)属性声明中的 'weak'和 'assign'有什么区别

这有什么区别:@property(nonatomic,weak)iddelegate;还有这个:@property(nonatomic,assign)iddelegate;我想为委托(delegate)使用属性。 最佳答案 weak之间的唯一区别和assign是如果对象是weak指向的属性被释放,则weak的值指针将设置为nil,这样您就永远不会冒访问垃圾的风险。如果您使用assign,这不会发生,所以如果对象从您下面被释放并且您尝试访问它,您将访问垃圾。对于Objective-C对象,如果您处于可以使用weak的环境中,那么你应该

objective-c - 委托(delegate)属性声明中的 'weak'和 'assign'有什么区别

这有什么区别:@property(nonatomic,weak)iddelegate;还有这个:@property(nonatomic,assign)iddelegate;我想为委托(delegate)使用属性。 最佳答案 weak之间的唯一区别和assign是如果对象是weak指向的属性被释放,则weak的值指针将设置为nil,这样您就永远不会冒访问垃圾的风险。如果您使用assign,这不会发生,所以如果对象从您下面被释放并且您尝试访问它,您将访问垃圾。对于Objective-C对象,如果您处于可以使用weak的环境中,那么你应该

ios - Objective-C ARC : strong vs retain and weak vs assign

ARC引入的属性有两个新的内存管理属性,strong和weak。除了copy,这显然是完全不同的东西,strongvsretain和有什么不同吗?弱vsassign?据我了解,这里唯一的区别是weak会将nil分配给指针,而assign不会,这意味着释放后,当我向指针发送消息时,程序将崩溃。但是如果我使用weak,这将永远不会发生,因为发送到nil的消息不会做任何事情。我不知道strong和retain之间有什么区别。我有什么理由应该在新项目中使用assign和retain,还是已经弃用了? 最佳答案 看了这么多Stackoverf

ios - Objective-C ARC : strong vs retain and weak vs assign

ARC引入的属性有两个新的内存管理属性,strong和weak。除了copy,这显然是完全不同的东西,strongvsretain和有什么不同吗?弱vsassign?据我了解,这里唯一的区别是weak会将nil分配给指针,而assign不会,这意味着释放后,当我向指针发送消息时,程序将崩溃。但是如果我使用weak,这将永远不会发生,因为发送到nil的消息不会做任何事情。我不知道strong和retain之间有什么区别。我有什么理由应该在新项目中使用assign和retain,还是已经弃用了? 最佳答案 看了这么多Stackoverf

c++ - sizeof(some pointer) 是否总是等于四?

这个问题在这里已经有了答案:DoallpointershavethesamesizeinC++?(10个回答)关闭4个月前。例如:sizeof(char*)返回4。正如int*、longlong*以及我尝试过的所有内容一样。有没有异常(exception)? 最佳答案 您得到的保证是sizeof(char)==1。没有其他保证,包括不保证sizeof(int*)==sizeof(double*).实际上,在16位系统上,指针大小为2(如果你能找到的话),在32位系统上为4,在64位系统上为8,但是依靠在给定的尺寸上。

c++ - sizeof(some pointer) 是否总是等于四?

这个问题在这里已经有了答案:DoallpointershavethesamesizeinC++?(10个回答)关闭4个月前。例如:sizeof(char*)返回4。正如int*、longlong*以及我尝试过的所有内容一样。有没有异常(exception)? 最佳答案 您得到的保证是sizeof(char)==1。没有其他保证,包括不保证sizeof(int*)==sizeof(double*).实际上,在16位系统上,指针大小为2(如果你能找到的话),在32位系统上为4,在64位系统上为8,但是依靠在给定的尺寸上。

c++11 - std::weak_ptr 什么时候有用?

我开始研究C++11的智能指针,但我看不到std::weak_ptr的任何有用用途。谁能告诉我std::weak_ptr什么时候有用/必要? 最佳答案 std::weak_ptr是解决danglingpointer的一个很好的方法。问题。通过仅使用原始指针,不可能知道引用的数据是否已被释放。相反,通过让std::shared_ptr管理数据,并将std::weak_ptr提供给数据的用户,用户可以通过调用expired()或lock().您不能单独使用std::shared_ptr来执行此操作,因为所有std::shared_ptr

c++11 - std::weak_ptr 什么时候有用?

我开始研究C++11的智能指针,但我看不到std::weak_ptr的任何有用用途。谁能告诉我std::weak_ptr什么时候有用/必要? 最佳答案 std::weak_ptr是解决danglingpointer的一个很好的方法。问题。通过仅使用原始指针,不可能知道引用的数据是否已被释放。相反,通过让std::shared_ptr管理数据,并将std::weak_ptr提供给数据的用户,用户可以通过调用expired()或lock().您不能单独使用std::shared_ptr来执行此操作,因为所有std::shared_ptr

free(): invalid pointer的问题

解决方法:1.通常是有指针越界造成的,仔细检查代码有没有越界的行为。2.指针在程序运行中位置发了变化,例如指针a,执行了a++操作。实例:#include #include#include #defineSIZE_BYTE10 intmain(void){   inti;    char   *buff;    buff=(char*)malloc(SIZE_BYTE);    (char*)memset(buff,'a',SIZE_BYTE);    for(i=0;i    {      printf("buf[0]=%c\n",*(buff));       buff++;   }   

free(): invalid pointer的问题

解决方法:1.通常是有指针越界造成的,仔细检查代码有没有越界的行为。2.指针在程序运行中位置发了变化,例如指针a,执行了a++操作。实例:#include #include#include #defineSIZE_BYTE10 intmain(void){   inti;    char   *buff;    buff=(char*)malloc(SIZE_BYTE);    (char*)memset(buff,'a',SIZE_BYTE);    for(i=0;i    {      printf("buf[0]=%c\n",*(buff));       buff++;   }