摘要:
浅拷贝与深拷贝的坑 以下代码会触发断点invalid address。堆区的数据被free()的时候可能会出的坑。 #include <iostream> #include <cstring> using namespace std; class Solution { public: int id 阅读全文
摘要:
在C++中。 通过指针间接修改全局变量直接在编译器阶段就无法通过,因为全局变量在常量区中,收到保护。 而修改局部变量的时候,编译器可以通过,但是在发生修改的时候,编译器会开辟一块新的内存,创建一个新的 *temp赋值给 *p, 而a的值不会发生改动。所有对const常量取地址的操作都是取到了编译器新 阅读全文
摘要:
DFS 823.排列 给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。 现在,请你按照字典序将所有的排列方法输出。 输入格式 共一行,包含一个整数n。 输出格式 按字典序输出所有排列方案,每个方案占一行。 数据范围 1≤n≤91≤n≤9 输入样例: 3 输出样例: 1 2 3 1 3 2 阅读全文
摘要:
使用指针对访存进行优化 假设现在有一个结构体,里面有非常多的成员,现在要对其使用tostring()方法进行打印 struct a { int aaa; //很多成员 }; int main() { struct a xxx = a{ 123 }; tostring(xxx); return 0 阅读全文
摘要:
const与指针 1)使指针指向地址的内容无法被修改 struct a { int aaa; }; int main() { struct a xxx = a{ 123 }; const struct a* p = &xxx; //可以输出 cout << p->aaa; //无法通过编译,因为 阅读全文
摘要:
野指针的重复释放问题 最近发现了这样一个问题,一个指针释放两次之后,若在中间不置空,会报Invalid address specified to RtlValidateHeap 无效的堆地址 错误。 #include <iostream> #include <string> #include <ma 阅读全文
摘要:
指针局部变量赋值的坑 输出结果为空,并非helloworld 其主要原因为:传递指针 后,指针的赋值与传统变量不相同,在函数中,局部变量指针给原指针的赋值很可能出现问题。 #include <iostream> #include <cstring> #include <malloc.h> using 阅读全文
摘要:
1.函数局部变量地址释放的坑 main()调用test()方法,返回a的地址,但是a是test()的局部变量,因此在test()调用结束之后,test()的栈空间就被移除,a的储存空间被释放,即使保存了指向a的指针,也无法获得10. 第一次能得到10的原因是编译器优化保留了一次数据。 #includ 阅读全文
摘要:
sizeof的trick sizeof运算时的问题 sizeof得到的无符号数,也就是说,任何与它进行运算的数字都为正数,这玩意不能用于判断语句。 #include <iostream> #include <typeinfo> using namespace std; int main(){ //判 阅读全文
摘要:
指针定义时候容易发生的错误 定义指针的时候记得将 "*"与指针变量写在一起,不要和 char这种基本数据类型写在一起。 #include <iostream> #include <typeinfo> using namespace std; int main(){ //相当于定义了两个变量 一个是c 阅读全文