如何将值分配给指向 NULL 的指针
How to assign a value to a pointer that points to NULL
我有一个指向 null 的指针,我想给它赋一个值。但是如果我尊重它,我会得到一个错误。我试过这个:
*nullPointer = value;
但就像我说的,我得到了一个错误。我该怎么做?我做不到
nullPointer = &value
因为后面的值(它是一个对象)被删除,并且 nullPointer 将指向无效内存。
指针必须指向有效对象才能指向有意义的内容,并且您有责任确保它指向的对象保持有效。
如果它指向的对象在堆栈上,并且在其作用域结束后变得无效 您应该使用动态内存在堆上分配对象。但是,信息太少,无法知道您在做什么以及是否需要在此处
。int *ptr = new int;
*ptr = value;
...
...
delete ptr;
指针
是指内存(RAM)中的位置。当您有null pointer
时,它指向 null,这意味着它不指向内存中的位置。只要指针为空,它就不能用于存储任何信息,因为没有内存备份它。
要使用空指针,必须首先分配内存,然后让指针指向新分配的内存。
*int p = null;
*p = 10; //this won't work as there is no memory backing up this pointer
p = new int;
*p = 10;
听起来你想要一个引用对象的指针,直到/除非该对象被删除,此时它的行为大致类似于空指针 - 也就是说,你至少可以检测到它不再指向任何东西。
如果是这种情况,您可能需要一个weak_ptr
(在 C++11、TR1 和 Boost 中可用)。你把它和shared_ptr
一起使用。当对象的最后一shared_ptr
被销毁时,对象本身也将被销毁。之后,您可以检测到weak_ptr
不再引用任何内容(Boost 文档等提供了更多详细信息)。
编辑:这是weak_ptr
的Boost文档中的示例:
shared_ptr<int> p(new int(5));
weak_ptr<int> q(p);
// some time later
// this will succeed *only* if at least one other reference to the pointee still exists.
if(shared_ptr<int> r = q.lock())
{
// use *r
}
相关文章:
- 当使用通配符和null指针调用函数时,对输出的说明
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- 将位数组转换为 HBITMAP 后 bmBits 的 NULL 指针
- 在访问类的树层次结构中的对象时避免使用 null 指针
- 排序时引用绑定到 'value_type' 类型的 null 指针
- NULL指针解决方案中的C 分割故障
- 取消引用会导致崩溃,即使对于非 NULL 指针也是如此,原因也是如此
- 跟进哈希表 C++,this->next = NULL 指针
- C++中的NULL指针
- 当删除NULL指针(C/C )时,可以保证SegFault
- 引用绑定到类型 'struct value_type' 的 null 指针
- 尝试在C++中使用 NULL 指针时不会发生分段错误
- if(NULL==指针)和if(指针==NULL)之间有什么区别
- 在Linux/GCC下,将NULL指针访问转换为C++异常
- NULL指针检查线程安全
- cppcheck null指针取消引用:m_buffer-否则,针对null进行检查是多余的
- strtok() - 为什么必须传递 NULL 指针才能获取字符串中的下一个标记
- Null指针异常(int Vs char)
- 用户定义类中的Null指针无效
- 不是NULL指针,而是错误的访问错误消息