12 2022 档案
摘要:反射 c++本身是没有反射机制的。反射是什么?我认为是运行时对象信息库,反射就是在需要获取对象信息的时候使用,在做类型转换的时候使用,获取对象实例的时候使用...统一一下就是获取对象信息的时候。 那我们要去做一套反射机制,应该怎么做呢?C#的反射机制是在编译器里收集对象的信息,然后再运行时去读取元数
阅读全文
摘要:这篇文章有参考ue5源码和其他源码。 多线程同步.h文件 /** * 关键段 用户模式下同步对象,除非竞争非常激烈,否则不会进入内核模式 */ class SYSTEM_API MCriticalSection { #if WINDOWS_PLATFORM //平台宏 CRITICAL_SECTIO
阅读全文
摘要:用户模式下的线程同步 原子访问 指的是一个线程在访问某个资源的同时能保证没有其他线程会在统一时刻访问同一资源。传入的变量必须是经过内存对齐的 InterlockedExchangeAdd/InterlockedExchangeAdd64:给传入的值增长传入的增量 InterlockedIncreme
阅读全文
摘要:内容主要为《windows核心编程第五版》 多线程在应用过程中主要的目标是解耦和同步 解耦:让一个小的模块依赖另一个模块变成依赖一个简单是信号,不用管是给的信号,只要给到了信号,我就执行对应的逻辑,这样的架构会让逻辑代码充分的解耦。 同步:同步资源的权限状态 线程 线程由内核对象和线程栈组成,线程默
阅读全文
摘要:这篇文章将用来记录平时第一次遇到的语法或关键字,仅记录我使用到的功能,不进行拓展。 volatile C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier(内存壁垒)。是一种类型修饰符,用它声明的类型变量表示可以被某些编译
阅读全文
摘要:C++委托蓝图注册 //声明委托 必须声明多播委托 DECLARE_DYNAMIC_MULTICAST_DELEGATE(FRefresh); //声明委托字段 { UPROPERTY(BlueprintAssignable) FRefresh dTest; } 蓝图使用 C++方法蓝图调用 UFU
阅读全文
摘要:在12月份的时候写的这篇文章,感觉有很多地方都没有写到位,现重构这篇文章。(2023/2/2重构) 堆内存特征 1.堆管理器调拨的物理存储器始终是从页交换文件中分配的。 2.在默认情况下对堆的访问是依次进行的,使多个线程可以从同一个堆中分配和释放内存块。 3.一个进程可以有多块堆内存 堆申请的内存在
阅读全文
摘要:内核对象是什么? 内核对象是以一个内存块,它由操作系统内核分配,并只能由操作系统内核访问。这个内存块是一个数据结构,其成员维护着与对象内相关的信息。内核对象只能由操作系统访问,所以应用程序不能再内存中定位 这些数据结构并直接修改内容。 内核对象怎么创建? 应用程序使用Windows提供的函数来访问内
阅读全文
摘要:ue5加载ui和ue4略有不同,创建UIApI->CreateWidget有一些改动。 template <typename WidgetT = UUserWidget, typename OwnerT = UObject> WidgetT* CreateWidget(OwnerT* OwningO
阅读全文
摘要:ue5委托 ue的委托使用宏来进行声明,对参数个数和返回值个数要求不一样可以使用不同的宏来声明。下面是一个有一个返回值,无参数的委托 DECLARE_DELEGATE_RetVal(bool,State_SwapFunc); 值捕捉 s.eS是对象的一个枚举FsmState的字段,这里会返回两个枚举
阅读全文
摘要:官方文档:https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/reference/stat-functions?view=msvc-170 推荐使用_tstat方法,会根据编译环境选择适合的方法。该方法会从指定路径下查找文件如果查找到了会返
阅读全文
摘要:这个错误是因为在普通c++类声明的时候添加了【项目名_API】这个宏。所以,普通类里不能使用这个玩意儿。
阅读全文