丁同亚的博客
夺朱非正色
摘要: 栈空间会随着函数执行完而释放,空间里的值可能会被覆盖 #include <iostream> void* Fun(int* a,int* b) { int c = *a + *b; return (void*) & c; } void overwriteStack() { int dummy[100 阅读全文
posted @ 2025-02-27 20:24 丁同亚的博客 阅读(10) 评论(0) 推荐(0)
摘要: 为什么分节 节省硬盘空间 任何一个exe都有自己独立的4gb空间,应用程序使用的都是虚拟内存 3.有些节可以复用 阅读全文
posted @ 2025-02-27 11:38 丁同亚的博客 阅读(14) 评论(0) 推荐(0)
摘要: 1.指定某个位的值 // bit.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> /** num: 源操作数 n: 表示要修改操作的数第几位 flag: 修改成1还是0 */ unsigned int setbit(unsign 阅读全文
posted @ 2025-02-26 16:31 丁同亚的博客 阅读(8) 评论(0) 推荐(0)
摘要: 指针类型加减运算的步长和它修饰的类型的宽度一致 函数指针 定义:int (*pfun)(int,int); //或者 typedef int (*pFun)(int,int); pFun pfun; 阅读全文
posted @ 2025-02-25 13:41 丁同亚的博客 阅读(8) 评论(0) 推荐(0)
摘要: switch 反汇编后的几种情况 1.同 if else,每个分支都会比较 2.生成跳转表,计算出地址 3.生成两张表,通过计算跳转 4.二分查找 阅读全文
posted @ 2025-02-24 11:05 丁同亚的博客 阅读(16) 评论(0) 推荐(0)
摘要: 参数和局部变量没有本质区别,都是栈中的数据 参数时在函数调用前分配的值,局部变量是在函数调用时分配的值 参数 ebp+* 局部变量 ebp-* 赋值的本质是把运算结果放到某个内存里 数组: 一堆连续存储的等宽数据 结构体:结构体得定义不会在编译后的程序中 阅读全文
posted @ 2025-02-22 19:17 丁同亚的博客 阅读(11) 评论(0) 推荐(0)
摘要: crypto-js不支持 AES_GCM 加密 ,听说可以用 crypto 支持?当时是自己写的.... crypto API 要求页面在安全上下文(Secure Context)中运行。localhost 和 127.0.0.1 被视为安全上下文,但通过普通 IP 地址(如 192.168.x.x 阅读全文
posted @ 2025-02-05 09:20 丁同亚的博客 阅读(132) 评论(0) 推荐(0)
摘要: 简单点说 计算机加法器容易实现 1.通过异或运算算出每一位进位之后留下的的值 2.与运算和左移运算算出进位值 3.让前两步的结果相加 (即是循环上两步直到不产生进位) 一个只有4位的寄存器 从0000 到1111 再加1 又会回到0000 这就形成了一个环.类比钟表.如果我们用 0000-0111表 阅读全文
posted @ 2025-01-13 20:59 丁同亚的博客 阅读(24) 评论(0) 推荐(0)
摘要: 整数加减乘除 加法通过异或和与和位移运算 没有减法,减法就是加法,只不过负数的表示方式 小数加减乘除 浮点数的表示是科学计数法表示的 加减乘除类似于十进制科学计数法的加减乘除 阅读全文
posted @ 2025-01-12 17:19 丁同亚的博客 阅读(6) 评论(0) 推荐(0)
摘要: 链表反转 二叉树递归遍历 二叉树循环遍历得到递归序 二叉树宽度优先遍历 判断是否是搜索二叉树,完全二叉树,满二叉树,平衡二叉树 (树形DP套路) 图 图的表示方法比较多,选择一个常用的实现所有算法 图的广度优先遍历 图的深度优先遍历 拓扑排序 最小生成树 阅读全文
posted @ 2025-01-12 17:18 丁同亚的博客 阅读(8) 评论(0) 推荐(0)