
C/C++
文章平均质量分 68
C/C++ 学习的相关笔记
Jave.Lin
积跬步至千里
展开
-
mmap 函数 - 让内存数据变成 CPU 指令数据
没用过,只是觉得后续可以测试一下,之前在学习 热更方案的时候不小心看到 mmap 这函数,觉得还是挺有用的,下面只是记录一些信息便于后续实验用mmap 函数mmap(2) — Linux manual page认真分析mmap:是什么 为什么 怎么用mmap (一种内存映射文件的方法)mmap实现原理浅析Linux中的mmap映射 [二]Linux内存管理 (9)mmap(补充)谁偷了我的热更新?Mono,JIT,iOS其中 谁偷了我的热更新?Mono,JIT,iOS - 很好的原创 2021-09-30 11:48:36 · 284 阅读 · 0 评论 -
Windows 下使用 Mingw32-make 来执行 Makefile示例
文章目录先下载 Mingw设置好环境变量确认安装环境状态gccmingw32-makeC 工程测试main.cmath.ccall_math.c准备好 Makefile 文件执行 Makefile执行前执行后运行 main.exe执行 Makefile clean 清理文件执行前执行后整体运行演示 GIFReferernces先下载 Mingw这里使用的是 mingw32 不是 64 的,需要 64位 的自行搜索下载32位 的可以参考我之前一篇的:C - Book Note - Win 开发环境设置原创 2020-09-13 10:29:02 · 45031 阅读 · 2 评论 -
C++ 如何判断一个对象是否被删除、统一管理对象
文章目录BUG解决方式完整测试例子之前写了一篇:C++ 统一管理对象的删除,使用指针的指针**,或是指针的引用*&BUG其实发现这种写写法很有问题:因为如果一个对象被 delete 后,或是 free 后,随时都有可能会立刻被分配到其他地方的内存使用了。所以 当前对象 this 或是 this 中的 char* _isDestroy 成员就有可能会被其他程序分配到一个我们这个程序中不可访问的内存地址中去,这时要是通过以下原来的判断方式就会出错:可能会报 this 内存地址不可访问。原创 2020-08-07 09:06:31 · 3479 阅读 · 0 评论 -
C++ “void std::sort(const _RanIt,const _RanIt)”: 应输入 2 个参数,却提供了 3 个 - 已解决
在使用 #include<algorithm> 中的 sort 函数遇到 “void std::sort(const _RanIt,const _RanIt)”: 应输入 2 个参数,却提供了 3 个 之类的错误问题的出现如下:有一个 Camera 类下有一个函数声明:bool rendererCmp(MeshRenderer* a, MeshRenderer* b); 注意不是静态(static)的使用 sort 中第三个参数使用该方法: // 排序 render原创 2020-07-29 18:57:44 · 2605 阅读 · 0 评论 -
C++ 宏字符串拼接、宏参数拼接成符号、宏嵌套、宏变长参数
// jave.lin#include<iostream>#define __TO_STR(f1,f2) "__"#f1"_"#f2"__" // 字符串拼接#define __CONNECT__FLAG(f1, f2) __##f1##_##f2##__ // 宏参数拼接成符号#define __CALL(f1, f2) __CONNECT__FLAG(f1, f2) // 宏嵌套#define __CONNTECT__ARGS(...) (__VA_ARGS__) // 宏变原创 2020-07-13 16:23:23 · 10718 阅读 · 1 评论 -
C++ 统一管理对象的删除,使用指针的指针**,或是指针的引用*&
懒得动写字了,直接贴多一些代码吧。主要是使用 指针的指针 或是 指针的引用,这里使用的是后者 指针的引用,因为这样函数的外部调用和内部代码编写起来会友好一些。指针的引用 只要考虑使用起来会比较安全一些,毕竟 引用参数(实参) 是必须传入一个 左值,就是要有一个指针对象传入,不能留空。简单的测试// jave.linvoid my_alloc(int*& ptr_ref) { ptr_ref = new int(99);}void my_free(int*& ptr_re原创 2020-07-12 00:17:50 · 831 阅读 · 0 评论 -
C++ 编译错误:LNK 2019
错误提示LNK 2019 错误,其实早找我之前就遇到过:C++ Book Note - LNK 2019严重性 代码 说明 项目 文件 行 禁止显示状态错误 LNK2019 无法解析的外部符号 “public: __thiscall my_util::ReferCounter::ReferCounter(void)” (??0?KaTeX parse error: Expected group after '_' at position 71: …c: static void _̲_cdecl my原创 2020-07-10 21:57:45 · 4423 阅读 · 0 评论 -
C++ std::map 与 std::unordered_map 的 key 为 字符串的一些问题
最近在学习 C++ 的一些基础知识,发现 std::map 与 std::unordered_map 的 key 为 字符串 的一些问题,不知道是我使用姿势问题,还是其他的,如有大神熟悉,望不吝指正。目测内部对 字符串的 hash 计算出了问题?但是我怎么都不相信,毕竟这是经历了多少年的标准库了,而我现在才接触而已,我觉得 100% 是我的 使用姿势不对 的问题。那么看看我是如何测试的。先插入数据:using _t = std::map<const char*, int>;...原创 2020-07-10 20:26:44 · 5262 阅读 · 2 评论 -
C++ 模板成员的非指针类型的成员初始化
留意上面的图片中 底部的蓝底白字 的警告内容。因为类型是不确定的,所以初始化也比较麻烦的。不过我们也可以使用 T* 指针类型的来初始化为 NULL / nullptr下面测试代码:// jave.lin - testing for template_type_member_init#include<iostream>#include<string>template<typename T>class Test {public: // T te.原创 2020-07-10 18:11:48 · 355 阅读 · 0 评论 -
C++ 类之间相互引用导致编译错误的问题
C++ 的编译器提示报错 XXXX 定义不存在导致这个原因是因为我在写两个类的时候,他们有相互引用,而这种引用关系,在某些功能是无法避免的,以前用C#的时候是不会有这种问题,编译器帮我们处理了很多这些问题,但在C++中就需要自己处理了。错误示例如下:先有一个头文件GameObject.h// jave.lin// GameObject.h#ifndef _GAMEOBJECT__H_#define _GAMEOBJECT__H_#include"Component.h"class Ga原创 2020-07-07 12:30:51 · 1253 阅读 · 0 评论 -
C++ 反汇编/栈帧
文章目录查看 C++ ASM调试是断点反汇编信息在项目属性的文件输出源码+汇编Debug 下的:[ProjectName].asmRelease 下的:[ProjectName].asmReferences学习目的:部分 shader 反汇编 后的代码查看部分业务逻辑层的算法、逻辑优化等查看 C++ ASM有好几种方法可以查看 MSVC 的编译器 CL.exe 编译出来的 C++ 汇编代码。下面获取反汇编代码都是基础 Release 下,因为 Debug 下太多调试信息,不太方便阅读调试是原创 2020-05-26 15:19:52 · 1750 阅读 · 0 评论 -
C++ _cdecl,_stdcall,_fastcall 函数调用约定/协议
_cdecl, _stdcall, _fastcallVS C++中默认的函数调用约定是_cdecl(我的VS是2019版本的,可能其他版本的不是_cdecl的),如下图:如下图所示,MSVC编译器提供了四种调用约定:下面是在 Debug 模式下的反汇编代码。(因为Release会优化而删减这个简单例子的代码)_cdecl, _stdcall 的区别函数栈帧末端处理函数出栈后处理References...原创 2020-05-26 13:57:34 · 677 阅读 · 0 评论 -
C++ 将一个数值调整问上限的为某个POT的倍数值 - ROUND_UP_TO_POT_NUM
今天偶然看到一篇:STL空间配置器–《STL源码剖析》读书笔记讲的是 C++ 内存分配管理的,挺不错。其中看到一个:ROUND_UP 函数,看到算法我能在脑海里想象到一部分数值的二进制的过程,但是还是用之前自己学习C++写的一个:BitSet 来查看数值计算过程,发现挺有趣的过程。下面的 "BitSet.h" 就是上面提到的 BitSet/* a.cpp - jave.lin */#include <iostream>#include "BitSet.h"// 不成功的数值,因为原创 2020-05-16 22:33:09 · 501 阅读 · 0 评论 -
VSC C++ Debugging Settings
文章目录下载MinGW GCC/G++MinGW Installation Manager 安装GDB setupsBuildingg++ -gVSC c++ debugging settingsSetting Building Infos in TerminalDebuggingReferences之前使用的是史上最强IDE :VS来编译+调试,压根不考虑这些然后我发现VSC上很轻量,所以就试试VSC上编译+调试。所以需要GDB来调试。而且VSC上对文本编译比VS上快速。这才是我使用的主要原因。下原创 2020-05-15 16:49:09 · 830 阅读 · 0 评论 -
C++ BitSet
还是温习C++位操作符操作符功能用法~按位非~expr<<左移expr1 << expr2>>右移expr1 >> expr2&按位与expr1 & expr2^按位异或expr1 ^ expr2|按位或expr1 | expr2&=按位与赋值expr1 &= expr2^=按位异或赋值expr1 ^= expr2|=按位原创 2020-05-15 12:50:07 · 319 阅读 · 0 评论 -
C++ - Sodoku Killer(DFS) - 实现一个数独解算器
文章目录数独相关知识什么是数独解题技巧史上最难数独普通解法DFS解法编写个数独解释器放一个是上最难数独来测试制作到游戏Project编译环境References以前挺喜欢完数独的。觉得这个数字之间有这么“巧合”的关系,真的很神奇。既然现在要重温C++,那就用C++写个数独解算。数独相关知识什么是数独什么是数独,详细可参考1。一个好的数独题,是只有一个解的,意思每个格子能填的数字最终是唯一的。有一些没有设计好的数独题,会有多个解,也称无解。解题技巧数独技巧我的数独解算器就参考了里面的部分原创 2020-05-13 22:39:34 · 1243 阅读 · 0 评论 -
C++ Book Note
文章目录hello worldg++ 编译参数define & g++ -Dg++ -U & -DNULL & nullptrtypeidsize .\out.exe or .\out.outcout alginnumeric_limits min, maxRefernces晴天霹雳你觉得很惊讶吗?哈哈哈,我可是天天都看到各种霹雳!早已习空见惯了。从大学出来就由于工...原创 2020-05-13 22:09:14 · 5395 阅读 · 0 评论 -
C - 单链表倒序遍历
思路:利用函数栈的 后进先出 的特性如果链表太深,会爆掉函数栈的// jave.lin 2020.4.30#include <stdio.h>#include <stdlib.h>typedef struct LL LinkedList;typedef struct LL { int value; LinkedList* next;} L...原创 2020-04-30 00:13:55 · 489 阅读 · 0 评论 -
C - Book Note
文章目录Win 开发环境设置Hello world!printf format testdefine variable testextern var testtime testapplied domain test1D array testmulti D array testenum testpointer testrand testcallback or func pointer teststr...原创 2020-04-23 14:17:03 · 12232 阅读 · 0 评论 -
有符号char的+、-法位运算过程
有符号short的+、-法位运算过程 由2个bytes (8个bits,从左,往右数,左边4bits称:高8位,右边4bits称:低8位) 高位byte的第4个bit作为是否负数的标识,0:正,1:负 如:[F]000 0000中,F就是标识是否负责的标识bit将负数值,转为正数,需要用将F外的bit先反转(反转的意思是:0转1,1转0),最后第1个bit的值+12-1的位运算过程原创 2015-08-01 14:05:42 · 1392 阅读 · 0 评论 -
C Self-study Log
本人刚自学C;发现,C语言的暂停很多人都不用system("pause"),都使用getchar();(但这个有些问题,自己可以试着使用:如:在程getchar(),往后还需要getchar()来暂时的时候,因为getchar()只有在第一次调用时才等待用户输入,再处理,之后,都直接读取标准库内用户输入的字符信息,一个一个字符的取,而不用再等待用户输入才处理);之前的测试代码都用system(...原创 2013-02-20 15:37:07 · 671 阅读 · 0 评论 -
C 自定一个Mini GC
看了一篇:Baby's First Garbage Collector先是看了一篇译文感觉代码中,可以看到,很多的一些思路;非常赞;在面对很多资源管理,处理,回收,还是很值得参考的;这让你对java,或是C#中的GC,更了解;转载 2014-03-26 12:08:49 · 1247 阅读 · 0 评论