预备知识:内存的分类 C/C++程序占用的内存分为两大类:静态存储区与动态存储区.其示意图如下所示: 数据保存在静态存储区与动态存储区的区别就是:静态存储区在编译-链接阶段已经确定了,程序运行过程中不会变化,只有当程序退出的时候,静态存储区的内存才会被系统回收.动态存储区是在程序运行过程中动态分配的. 在其它地方我们还可以看到内存分配还有其他分类,那些都是细分的分类,比如文字常量区.全局数据区等,都归为静态存储区这一个大类. 关于内存的分类这里只是大致说明一下,关于内存更详细的内容可查看往期笔记…
返回数组指针的函数 基础知识:数组不能被拷贝,函数不能返回数组,只能返回数组的指针或者引用. 定义一个 返回数组指针的函数 的方法,以 一个接收参数为 含有10个整型元素的数组的引用  和 返回一个含有10个整型元素的数组的指针 的函数为例. 法一:(不使用别名) ]))[] { ] = (])]; ; i < ; i++) (*n)[i] = arr[i]; return n; } //note:该函数返回了分配在堆的数组,如果得到该数组后没有释放内存,会导致内存泄漏,这里仅仅作为示例不考虑该…
1.内存泄漏:申请的堆内存没有释放. 2.内存污染:前面非法操作使用内存(没有报错),后面写着写着就出错.如下代码: 当结构体中只有划线部分代码时,在编译器中编写不会报错,但此时已经造成非法操作内存,下面再给结构体添加一些变量,此时就会报错,不让再定义变量(这种错误特别不好调试)需要注意. 3.对空字符串和非法字符串的判断: 图中画蓝线的部分:应该判断的是指针变量的值,而不是指针指向的内存 4.指针越界:如:str[3] = "abc"; 5.指针的叠加会不断改变指针的指向. 如:ch…
1. 关于二级指针的解析和引用 1.1  二级指针意义  二级指针存放的是一级指针的地址    Ex: Int a = ; Int *p = &a; Int **q = &p; 1.2. 为啥要用二级指针 如果将一个指针作为形参传入某个函数,并在函数体内进行判断,改变该指针的指向,形参必须设置为二级指针,也就是将原指针的地址传入才可以,否则,根据函数体在临时栈中执行,如不传入地址,它使用的是形参指针在栈中的一个copy,函数体执行完毕后,即被释放掉 2. 关于指针的类型指向 a. 指针是有…
前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点. JavaScript知识点 1.变量作用域 var a = 1; function test() { var a = 2; console.log(a); // 2 } test(); 上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. va…
本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点. JavaScript知识点 1.变量作用域 var a = 1;function test() { var a = 2; console.log(a); // 2} test();上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. var a =…
今天来给大家分享一下java的重点易错点第二部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.字符串创建与存储机制:当创建一个字符串时,首先会在常量池中查找是否已经有相同的字符串被定义,其判断的依据是String类型equals的返回值,若已经定义,则直接获取对其的引用.此时不需要创建新的对象,如果没有定义,首先创建这个对象,然后把它加入到字符串池中,再将它的引用返回.(例:new String(”aaa“)可能创建了1个或者2个对象,如果常量池中原来有aaa那么之创建了一个对象,如果没…
前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点. JavaScript知识点 1.变量作用域 var1; functiontestvar2; .log(a); // 2上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. var1; functiontest2console// undefin…
前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点. JavaScript知识点 1.变量作用域 var a = 1; function test() { var a = 2; console.log(a); } test(); 上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. var a =…
一.常用方法解析   说起数组操作,我们肯定第一反应就是想到forEach().map().filter()等方法,下面分别阐述一下各方法的优劣. 1.forEach 1.1 基础点   forEach的使用频率很高,多用于对数组自身的改变和各元素相关统计性的计算,重要特性如下: 可以改变数组自身,没有返回值: 中途不能用常规操作跳出循环,可以用抛出异常(try/catch)的方式,但不推荐这样做: 1.2 易错点 forEach()不一定改变自身数组.我们可以看看数组中的元素是值类型和引用类型…