null-pointer相关内容
删除NULL指针安全吗? 这是一种好的编码风格吗? 解决方案 delete 无论如何都会执行检查,因此在您这边检查会增加开销并且看起来更丑陋.非常好的做法是在 delete 之后将指针设置为 NULL(有助于避免重复删除和其他类似的内存损坏问题). 如果 delete 默认情况下将参数设置为 NULL,就像在 中一样,我也很高兴 #define my_delete(x) {
..
如果你在一个对象(指针)上调用一个 nil 方法(可能是因为有人忘记初始化它),那么在 Objective-C 中的正常行为是什么?它不应该产生某种错误(分段错误,空指针异常......)吗? 如果这是正常行为,有没有办法改变这种行为(通过配置编译器),以便程序在运行时引发某种错误/异常? 为了更清楚我在说什么,这里有一个例子. 有这个课程: @interface Person :
..
虽然我已经编写了最终过程,但我定义了一个派生类型并遇到了一些内存释放问题.代码如下 模块 ModuleCoordinate隐式无类型 :: TCoordinate实数(8),维度(:),指针::坐标=>;空值()包含过程 :: TCoordinateAssignment通用的,公共的 :: 赋值(=)=>TCoordinateAssignment最终 :: TCoordinateDel结束类型
..
我想使用 @Nullable 注释来消除 NullPointerExceptions.网上找了一些教程,发现这个注解来自包javax.annotation.Nullable;但是当我导入它时会产生编译错误:找不到符号 解决方案 你需要包含这个类所在的jar.你可以找到它这里 如果使用Maven,可以添加如下依赖声明: com.google.code.fin
..
目标:通过随机数和排序数创建x大小的数组. Array.java import java.util.Random;/*** 由 cazorla19 于 16 年 3 月 5 日创建.*/公共类数组{int myArray[];随机兰特;大批() {}数组 (int x) {数组 myArray[];myArray = 新数组[x];for (int i=0; i ArrayDo.java
..
int&乐趣(){int * temp = NULL;返回*温度;} 在上述方法中,我试图取消对 NULL 指针的引用.当我调用这个函数时,它不会给出异常.我发现当返回类型是按引用时,它不会给出异常,如果它是按值,那么它会.即使将 NULL 指针的取消引用分配给引用(如以下行),它也不会给出. int* temp = NULL:内部&温度 1 = *温度; 这里我的问题是编译器在引用的情况下
..
我定义了一个派生类型并在内存释放方面遇到了一些问题,尽管我已经编写了最终过程.代码如下 module 模块坐标隐式无类型 :: TCoordinatereal(8),dimension(:),pointer :: Coordinate =>空值()包含程序:: TCoordinateAssignment通用,公共::赋值(=)=>坐标分配最终 :: TCoordinateDel结束类型 TCoo
..
在 Rust 中,引用永远不能为空,所以如果你真的需要空值,比如链表,你可以使用 Option 类型: struct 元素 {值:i32,下一个:选项,} 与简单的指针相比,这在内存分配和取消引用步骤方面涉及多少开销?编译器/运行时是否有一些“魔法"可以使 Option 免费,或者比在非核心库中自己实现 Option 成本更低使用相同的 enum 构造,还是将指针包装在向量中? 解决方案
..
我有这段代码.它似乎在这里取消引用一个空指针,但随后将结果与 unsigned int 进行按位与运算.我真的不明白整个部分.它的目的是什么?这是指针算术的一种形式吗? struct hi{长一;国际b;长 c;};int main(){结构嗨 ob={3,4,5};struct hi *ptr=&ob;int num= (unsigned int) &(((struct hi *)0)->b)
..
我正在学习 C++ 并且我开始知道如果未初始化的指针可能指向内存中的随机位置并产生一些其他程序可能使用内存的问题. 现在如果是这种情况,我们不应该在我们的代码的任何部分中包含这一行: int* ptr; 相反,我们应该有类似 int* ptr = NULL;//这样可以避免这个问题吗 请提出建议,因为我在很多书中都看到了第一行 (int* ptr;) 所以我有这个疑问.如果可能,还可
..
通过简单地编写 if(pointer) 来检查指针是否为 NULL 是否安全,或者我是否必须使用 if(pointer != NULL)? 解决方案 你可以;空指针被隐式转换为布尔值 false 而非空指针被转换为 true.来自 C++11 标准,关于布尔转换的部分: 算术、无作用域枚举、指针或指向成员类型的指针的纯右值可以转换为类型的纯右值布尔.零值、空指针值或空成员指针值被转换
..
删除空指针是否安全? 这是一种好的编码风格吗? 解决方案 delete 无论如何都会执行检查,因此在您身边检查它会增加开销并且看起来更丑陋.非常的做法是在delete之后将指针设置为NULL(有助于避免重复删除和其他类似的内存损坏问题). 如果 delete 默认情况下将参数设置为 NULL,我也很喜欢 #define my_delete(x) {delete x;x = N
..
考虑以下代码: #include 结构体{//(一种):void bar() { std::cout
..
我一直听到人们谈论不可空引用类型如何解决如此多的错误并使编程变得如此简单.甚至 null 的创建者也称其为他的十亿美元的错误,以及Spec# 引入了不可为空的类型来解决这个问题. 编辑:请忽略我对 Spec# 的评论.我误解了它的工作原理. EDIT 2:我一定是在和错误的人说话,我真的希望有人与之争论:-) 所以我猜,作为少数,我错了,但我不明白为什么这场辩论有任何价值.我认为
..
我想使用 @Nullable 注释来消除 NullPointerExceptions.我在网上找到了一些教程,我注意到这个注释来自包 javax.annotation.Nullable;但是当我导入它时会生成一个编译错误:找不到符号 解决方案 您需要包含一个存在此类的 jar.您可以在 这里 如果使用Maven,可以添加如下依赖声明: com.google.cod
..
我正在阅读 一篇关于 C++ 中一些 nullptr 特性的帖子,一个特定的例子在我的理解中引起了一些混乱. 考虑(上述帖子中的简化示例): struct A {void non_static_mem_fn() {}static void static_mem_fn() {}};A* p{nullptr};/*1*/*p;/*6*/p->non_static_mem_fn();/*7*/p
..
1.是否定义了 NULL-NULL ?? 是否已定义(char *)NULL-(char *)NULL .? 是否定义了(uintptr_t)NULL-(uintptr_t)NULL ? 我知道它可以在我所有的实现中使用.但是,从标准角度看,它是什么样的呢?我找不到明确的答案. 编辑:从这个骗子中,我认为问题的一个答案是:是的. 第二个和第三个问题呢? 解决方案
..
对对象的引用构成访问吗? GCC和Clang当前正在做的事情: void test(int const volatile * ptr)noexcept {* ptr;//movl(%rdi),eax//读取* ptr[[maybe_unused]] int const volatile&ref = * ptr;//不读* ptr} 我的问题是关于陈述的 [[maybe_unuse
..
可能重复: 是否有任何理由检查 删除之前是否为空指针? 我经常在代码中看到以下内容: if(pointer) delete pointer; 据我了解,删除空指针是安全的,那么此检查的目的是什么? 解决方案 delete将为您检查指针是否为NULL,所以您说对了,不需要检查. 您可能还会看到有人将指针删除后将指针设置为NULL ,这样您就不会做任何愚蠢的尝
..
程序: 一个简单的模拟器,用于学习Java的基础知识.用户可以在提供的编辑器中输入自己的代码,该编辑器可以使玩家跨领域移动.此代码在单独的线程中执行.除了当前的问题之外,该程序还可以正常运行,该错误突然出现并没有出现过. 问题: 由于某种原因,玩家会在随机的时间间隔内抛出以下异常.玩家执行什么动作都没有关系,因为在执行无限次重复的单个动作后的随机时间之后也会显示出来.每次在字段上
..