delete p后,只是释放了指针指向的内存空间.p并不会自动被置为NULL,而且指针还在,同时还指向了之前的地址 delete NULL编译器不会报错(因为delete空指针是合法的) 例: 对一个非空指针delete后,若没有赋NULL,若再次delete的话,有可能出现问题. 如下代码 int *p = new int(3); delete p; delete p; 用VC编译运行将出现问题. 将其改为: int *p = new int(3); delete p; p = NULL; d
起源: 今天在了解副作用side-effect的过程中,看到了下面的网页,把我带到了由printf引起的一系列问题,纠结了一整天,勉强弄懂. 第一个代码没什么好解释的.而第二个printf("return of swap is %d\tx=%d,y=%d\n",swap(&x,&y),x,y)居然是"return of swap is 1 x=1,y=0",输出的x和y的值并没有改变! 原因在于C语言函数参数的处理是从右到左的压栈顺序(这个我在看第一
为了弄清楚Spring框架,我们需要分别弄清楚相关核心接口的作用,本文来介绍下BeanPostProcessor接口 BeanPostProcessor 该接口我们也叫后置处理器,作用是在Bean对象在实例化和依赖注入完毕后,在显示调用初始化方法的前后添加我们自己的逻辑.注意是Bean实例化完毕后及依赖注入完成后触发的.接口的源码如下 public interface BeanPostProcessor { /** * Apply this BeanPostProcessor to th
Spring 如何保证后置处理器的执行顺序 - OrderComparator Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 一.JDK 自带的比较器 Comparator 1.1 Comparable Integer 内部实现了 Comparable 接口 public final class Integer extends Number implements Comparable<Integer> { publ
/** * person class */ class Person { /** * person class -> function say */ public static function say($i) { echo "hi-->"; var_dump($i); //return "hi"; } } class Dog{ public function say() { echo "wang !"; } } APO的主要思路 (