- 博客(112)
- 收藏
- 关注
转载 glibc中malloc()的空间overhead
在linux下调用malloc()分配内存的时候,实际占用的内存与请求的内存尺寸的关系是什么呢,这个需要研究一下glibc中malloc()的实现。现在常见linux发行版中带的glibc中采用的都是Doug Lea的实现,下面的分析取自他的2.8.4版本的malloc.c。glibc对内存的管理是以chunk为单位的,未分配的chunk之间用双向链表连接成一个环,遍历的时候用指针遍历,已分配的chunk在其首部有chunk的大小,并以此字节数做遍历。每个chunk的首部要放置一个叫做malloc_ch
2021-05-23 11:28:22 399
转载 建议使用强枚举类型
枚举量声明、定义、使用众所周知,C/C++ 语言可以使用 #define 和 const 创建符号常量,而使用 enum 工具不仅能够创建符号常量,还能定义新的数据类型,但是必须按照一定的规则进行,下面我们一起看下 enum 的使用方法。步骤(一)——枚举量的声明和定义(1) 首先,请看下面的语句:enum enumType {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};这句话有两个作用:...
2020-07-24 10:30:35 400
转载 C++ "free store" VS "heap"
当我问你C++的内存布局时,你大概会回答:“在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区”。如果我接着问你自由存储区与堆有什么区别,你或许这样回答:“malloc在堆上分配的内存块,使用free释放内存,而new所申请的内存则是在自由存储区上,使用delete来释放。”这样听起来似乎也没错,但如果我接着问:自由存储区与堆是两块不同的内存区域吗?它们...
2020-05-06 14:19:05 665
转载 VS2017配置opencv教程
https://blog.csdn.net/qq_41175905/article/details/80560429
2020-01-19 15:12:19 155
转载 c++ 匿名命名空间与static全局变量
https://www.cnblogs.com/youxin/p/4308364.htmlhttps://blog.csdn.net/Solstice/article/details/6186978
2019-11-15 10:57:13 1731
转载 Unity Shader 内置函数
编写Unity Shader时有很多内置函数,在网上查找了一些,把他们记录了下来,以供大家参考使用参考网址:http://www.cppblog.com/lai3d/archive/2008/10/23/64889.html这个是MSDN上的,DirectX Documentation里也有,其实也就是HLSL的内置函数Intrinsic Functions (Direc...
2019-08-31 12:55:35 2300
原创 《Untiy Shader入门精要》彩图
勘错表 http://candycat1992.github.io/unity_shaders_book/unity_shaders_book_corrigenda.html转自:http://candycat1992.github.io/unity_shaders_book/unity_shaders_book_images.html前言 第2章 渲染...
2019-08-31 12:52:36 548
转载 光源衰减与Swizzling操作
P192的9.2节最下面有这样的代码:#ifdef USING_DIRECTIONAL_LIGHT fixed atten = 1.0;#else float3 lightCoord = mul(_LightMatrix0, float4(i.worldPos, 1)).xyz; fixed atten = tex2D(_LightTexture0, dot(lightCo...
2019-08-30 14:56:21 618
转载 Lambert (兰伯特)光照模型
Lambert (兰伯特)光照模型 是光源照射到物体表面后,向四面八方反射,产生的漫反射效果。这是一种理想的漫反射光照模型。如下图:这个是顶点函数处理后的该光照模型,因此看起来像素不够平滑。漫反射 是投射在粗糙表面上的光向各个方向反射的现象。当一束平行的入射光线射到粗糙的表面时,表面会把光线向着四面八方反射,所以入射线虽然互相平行,由于各点的法线方向不一致,造成反射光线向不同...
2019-08-21 11:03:52 3227
转载 在Unity中使用多个相机 - 及其重要性
根据我的观察,很多Unity 用户统并没有掌握该如何在一个单一场景中使用多个Unity的摄像机,他们对这个概念缺乏一些了解。 “如果我只是想从一个角度看这个场景,为什么我需要使用多个摄像机?”这个问题初听上去很有道理,当多个摄像机从同一个角度捕捉场景的时候会使得它更加混乱。那为什么还要在同一个场景中同一个方向上使用多个摄像机?原因是有些复杂,但是在同一个场景中同一个方向上使用多个摄像机这个...
2019-08-09 15:57:58 6337 2
原创 Unity3D 获取场景中物体实际大小
通过组件MeshFilter每个模型都有MeshFilter,里面的mesh存储着模型的顶点信息。先通过GetComponent<MeshFilter>().mesh.bounds.size获取模型的mesh三维大小。而实际在空间的大小和自身的scale以及父物体的scale决定的,所以这里我们要将刚刚得到的vector3类型的值中的xyz分量和模型的transform.lossy...
2019-08-08 16:48:40 2615 1
转载 Unity3D中常用的数据结构总结与分析
https://www.cnblogs.com/murongxiaopifu/p/4161648.html
2019-08-06 18:48:22 243
转载 【Unity】c#和C++的区别总结
C#是三大主流OOP(面向对象编程)语言(C++,Java,C#)之一,也是最新的一种,其中必然借鉴了前两者的长处,“否则它的缔造者就该打屁股”——候捷语,见《C#Primer中文版》的译续:-)它们三者有太多的共性,其语法和编程概念,绝大部分彼此兼容,精一而通三。尤其对熟练掌握C++的程序员而言,学习Java和C#没有任何难度,唯一需要花些时间的地方就是熟悉这二者的类库。三者中,C++是我最...
2019-04-29 19:24:15 2650
转载 【Unity】Awake(),OnEnable()和Start()函数
https://blog.csdn.net/coffeecato/article/details/70557407
2019-04-29 14:38:39 1344
转载 【Unity】Physics.Raycast和Ray
在游戏中,我们常常要用到鼠标来控制物体的移动或是鼠标拾取某个物体。还有射击游戏里,子弹打中靶子……这些都需要Physics.Raycast和ray。可见他们的重要性。首先说说射线: 射线是3D世界中一个点向一个方向发射的一条无终点的线。在发射的轨迹中,一旦与其他物体发生碰撞,它就会停止。 在API文档中Ray是一个结构体【Struct】 (对于没有语言基础的同学来说理解这个可能会...
2019-04-28 15:56:45 1211
转载 可变参数实现
可变参数:https://www.cnblogs.com/chinazhangjie/archive/2012/08/18/2645475.html字节对齐位运算实现:https://blog.csdn.net/fulinus/article/details/8286252C++里用initializer_list<T>模板类来函数的可变形参,省略符形参应当只用来在c++程序里...
2019-04-25 19:37:51 123
转载 【Unity】Unity3D快捷键
Windows系统Unity3D中的快捷键组合键键功能File 文件Ctrl NNew Scene 新建场景Ctrl OOpen Scene 打开场景Ctrl SSave Scene 保存CtrlShiftSSave Scene as 保存场景为CtrlShiftBBuild Settings... 编译设置...Ctrl BBuild and run 编...
2019-03-30 10:25:53 439
转载 Python相对导入机制详解
本文是对 http://stackoverflow.com/questions/14132789/python-relative-imports-for-the-billionth-time#answer-14132912 这个 SO 答案的翻译。本人的翻译一向只追求含义准确而不追求字字对应,有些不好翻的术语或者固定说法就直接保留。这个答案能解释大多关于 relative import,即相对...
2019-01-01 15:16:10 401
转载 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别
编译型语言和解释型语言1、编译型语言需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独...
2018-12-19 21:20:35 143
转载 程序的可移植性
编程语言的可移植性意味着,用一种编程语言在一个系统上编写的程序经过很少改动或者不经修改就可以在其他系统平台上运行。 要想了解可移植性必须要知道:1.什么是程序?2.什么是系统平台?什么是程序 首先,我们得知道程序的本质是什么?程序的本质就是一连串能被CPU识别并执行的有0、1代码组成的指令即目标代码(0、1组成的代码)。不同类型的CPU指令集是不同的,相同的一段0、...
2018-11-25 18:10:43 11583
原创 借由function类和bind函数实现多态
一、 std::function对象,std::function对象是对C++中现有的可调用实体的一种类型安全的包裹#include < functional>std::function< size_t(const char*)> print_func;// normal function -> std::function objectsize_t CP...
2018-08-02 13:54:26 1296
转载 c++虚函数表
先写个例子 为了探索C++虚函数的实现,我们首先编写几个用来测试的类,代码如下: C++ #include <iostream>using namespace std;class Base1{public: virtual void f() { cout << "Base1::f()" &...
2018-08-02 00:30:44 275
原创 021二进制问题
// 二进制中1的个数//// 题目1:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如// 把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。//// 题目2:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数为奇数还是偶数。//// 题目1的思路1:注意移位运算中逻辑右移和算术右移的区别,所以不要对输入数进行右移// 操作,应该对标志...
2018-07-31 19:38:44 466
原创 020跳跃游戏
// 跳跃游戏//// 题目:// 给定一个非负整数数组,您最初定位在数组的第一个索引处。// 数组中的每个元素表示该位置的最大跳转长度。// 您的目标是以最小跳跃次数到达最后一个索引。// 例:// 输入:[2, 3, 1, 1, 4]// 输出: 2// 说明:到达最后一个索引的最小跳转次数为2。// 从索引0跳转1步到1,然后从最后一个索引跳3步。// 注意:// 您...
2018-07-29 19:18:54 163
原创 019硬币问题
// 硬币问题//// 问题:我们有面值为1元3元5元的硬币若干枚,如何用最少的硬币凑够n元(n为整数,其他输入返回0)?//// 思路:1.动态规划——平凡情况:n <= 0, 返回0, n为1,2,3,4,5时,返回1,2,1,2,1;n >= 6时,每次最后一次拿的// 硬币面额为1,3,5中的一种,最优解应该是前一次最优解加一,即f(n) = f(n - i) + 1...
2018-07-29 19:17:55 382
原创 018剪绳子
// 剪绳子 // // 题目:给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n&gt;1并且m≥1)。 // 每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]k[1]…*k[m]可能的最大乘 // 积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此 // 时得到最大的乘积18。 // // 思路:1.动态规划——平凡情况,n为0,...
2018-07-29 19:16:17 144
原创 017机器人的运动范围
// 机器人的运动范围// 题目:地上有一个m行n列的方格。一个机器人从坐标(0, 0)的格子开始移动,它// 每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和// 大于k的格子,也不能重复进入已走过的格子,例如,当k为18时,机器人能够进入方格(35, 37),// 因为3+5+3+7=18。但它不能进入方格(35, 38),因为3+5+3+8=19。请问该机器人...
2018-07-28 22:55:51 147
原创 016矩阵中的路径
// 矩阵中的路径// 题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有// 字符的路径。路径可以从矩阵中任意一格开始,每一步可以在矩阵中向左、右、// 上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入// 该格子。例如在下面的3×4的矩阵中包含一条字符串“BFCE”的路径。但矩阵中不// 包含字符串“ABFB”的路径,因为字符串的第一个字符...
2018-07-28 22:55:11 103
原创 015旋转数组的最小数字
/* * 旋转数组的最小数字 * 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 * 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组 * {3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。 * * 思路:二分查找。一般情况,首元素&gt;=尾元素,用三个指针指向首元素、尾后元素、中间元素,中间元...
2018-07-27 21:35:51 114
原创 排序算法的稳定性
首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高...
2018-07-26 21:45:07 203
原创 014排序算法大全
/* * 排序算法总结 */#include &amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt;using namespace std;class solution{public: // 原始起泡排序 void bubble_sort_origin(int* arr, int n) { if (!arr || n &amp;amp;amp;amp;l
2018-07-26 20:31:47 275
原创 013青蛙跳台阶、矩形覆盖问题
/* * 1.青蛙跳台阶 * * 问题: 青蛙一次可以跳一级台阶,也可以跳两级, * 问跳到n级台阶有多少种不同跳法 * * 思路:n级台阶有f(n)种跳法,第一次跳时有两种选择跳一级, * 此时跳法数等于后面n-1级台阶的跳法数目f(n-1),第一次跳 * 时跳两级,此时跳法数目等于后面n-2阶台阶的跳法数目f(n-2), * 有f(n) = f(n-1) + f(n-2),初...
2018-07-26 20:30:29 131
原创 012斐波那契数列
/* * 斐波那契数列 * * 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。 * * 思路:递归方法时间复杂度达到O(2^n),不实用,采用迭代方法,采用中间变量 * 记录结果,时间复杂度O(n) */#include <iostream>using namespace std;class solution{public:...
2018-07-25 20:49:12 188
原创 011用两个队列实现栈
/* * 用两个队列实现栈 * * 题目:用两个队列实现一个栈。栈的声明如下,请实现它的两个函数stack_push * 和stack_pop,分别完成在栈顶加入元素和弹出元素。 * * 思路:结点总是插入queue1,当queue1只有一个元素,弹出它;当queue1多于一个元素, * 依次取出其队首元素存入queue2,直至剩最后一个元素,弹出;若queue1为空,转到queue...
2018-07-25 20:48:09 143
原创 010用两个栈实现队列
/* * 用两个栈实现队列 * * 题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail * 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 * * 思路:结点总是插入stack1,当stack2非空的时候,删除的元素总是stack2的顶部结点; * 当stack2为空,就将stack1元素相继弹出,然后按序压入stac...
2018-07-25 20:47:04 90
原创 009二叉树的下一个结点
/* * 二叉树的下一个结点 * * 题目:给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? * 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针。 * * 思路:情况1:如果该结点有右子树,则右子树中最左子节点为所求; * 情况2:如果无右子树,且是其父结点的左子节点,则父结点为所求; * 情况3:如果无右子树,且...
2018-07-23 22:16:44 113
原创 008重建二叉树
/* * 重建二叉树 * * 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输 * 入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1, * 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8, 6},则重建出 * 二叉树并输出它的后序遍历序列。 * * 思路:前序序列中第一个值就是根节点的值,...
2018-07-23 20:54:20 107
原创 007二叉树基本操作
/* * 二叉树基本操作(没有父节点指针) */#include <iostream>#include <stack>#include <queue>using namespace std;struct tree_node{ int data; tree_node* lc; tree_node* rc;};cl...
2018-07-23 20:53:33 102
原创 006单链表的一些基本操作
/* * 单链表的一些基本操作 * 注意head是指向指针的指针 * ||||||||||||||||||||||| * 从尾到头打印链表 * * 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。(不改变 * 链表的结构) * * 思路:在不改变链表结构的前提下,链表的遍历是顺序的,而输出是逆序的,自然想到 * 用栈结构来存储顺序遍历的值。还有种方法是递归,原理与...
2018-07-23 20:52:27 136
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人