UE和C/C++
C/C++相关学习
qq_38234381
这个作者很懒,什么都没留下…
展开
-
Unreal笔记
DefaultBuildSettings = BuildSettingsVersion.V2优化编译速度:不再暴力递归包含所有头文件,只包含必要的头文件Unity高版本打开低版本项目问题较少,但低版本的Unity打开高版本项目问题较多UE同UE4中的CreatePlayer蓝图的ControllerId、GetPlayerController的PlayerIndex以及Pawn面板中的Auto Possess Player不是一个东西CreatePlayer:用于创建玩家,使用该方法创建的玩家UE4原创 2021-10-30 21:28:20 · 2229 阅读 · 0 评论 -
string和C风格字符串常用输入方式及相关函数解析
C风格字符串:char info[100];cin >> info;scanf("%s", info);cin.getline(info, 100);cin.get(info, 100);string:string stuff;cin>>stuff;getline(cin, stuff);//scanf不能读string函数解析:正常读取流程:cin:对于一次cin调用,在没有读到非空白字符前它会将遇到的所有空白字符丢弃(不会停止读取),在读到非空白字符原创 2021-10-22 14:23:33 · 299 阅读 · 0 评论 -
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]引发的思考
一.LayoutKind:控制导出为非托管内存中的对象时对象在内存中的布局三张类型:1.Auto:运行时会自动为非托管内存中的对象成员选择适当的布局,不能用在托管代码中,否则会导致异常2.Explicit:精确布局,需要用FieldOffset()设置每个成员的位置,这样就可以实现类似c的公用体的功能[StructLayout(LayoutKind.Explicit)] struct S1{ [FieldOffset(0)] int a; [FieldOffset(0)] int原创 2021-10-11 23:02:00 · 771 阅读 · 0 评论 -
VS中外部依赖项、引用和包
外部依赖项就是程序中用到的头文件,这些头文件存储在本地引用见https://www.zhihu.com/question/54587623/answer/140098562更深的蓝的回答包则更偏向于辅助程序员开发的某种工具的集合原创 2021-09-17 20:15:59 · 1131 阅读 · 0 评论 -
C++中资源释放简单总结
正题:1.对于动态分配的内存:①使用malloc申请,free释放②使用new([])申请,delete([])释放2.文件描述符:使用相应的构造函数和close释放(Linux下,Windows下文件描述符称为句柄,本质是相同的)3.锁:待补充引申:1.使用exit方法退出时:如果对象是局部对象,exit()函数不会调用对象的析构函数,因为不存在栈空间回收问题如果对象是全局变量,会调用对象的析构函数如果是动态建立的对象,除非手动删除,否则不会调用对象的析构函数关于exit方法和ret原创 2021-07-14 21:29:16 · 863 阅读 · 0 评论 -
C++near、far、huge理解
near(近)指针:16位段内偏移地址far(远)指针:16位段地址+16位段内偏移地址huge(巨)指针:32位规格化的具有唯一性的内存地址说明:near指针是16位指针,依赖一个段地址寄存器,指针变量就是位移量,利用段地址寄存器+指针来寻址,所以寻址范围有64K的限制far指针是32位指针,不但有16位的位移量,还有16位的段地址,但此指针有个缺陷,增量时只加到位移部分,一旦16位的位移量超过了FFFF就会回到这个段地址的初始huge指针:为解决far指针的问题而引入,huge指针与far一原创 2021-07-10 11:28:05 · 842 阅读 · 0 评论 -
C++#pragma pack
以下省略#pragmapack(16),将当前对齐方式设置为16pack(),取消自定义对齐方式,即开启默认对齐方式pack(push),将当前对齐方式压入栈顶pack(push,16),把原来对齐方式压栈,同时设置新的对齐方式为16pack(push,a),将当前对齐方式压栈,同时设置其标识符为apack(pop),弹出栈顶值,并将当前对齐方式设置为该值pack(pop,16),弹出栈顶值,并将当前对齐方式设置为16pack(pop,a),一直弹出,直到标识符为a的元素被弹出,若没有该标识原创 2021-07-02 19:48:15 · 1037 阅读 · 0 评论 -
多线程多进程与堆和栈的关系
简单来说就是同一进程的多个线程共享堆不共享栈,不同进程不共享堆详情见:https://blog.csdn.net/willib/article/details/21086207为什么线程不共享栈:因为线程是独立执行的,函数参数,局部变量都保存在栈中,函数名只是一段代码的起始地址而已,它执行时要取参数(保存在栈中),要取局部变量,这些都在栈中,所以为了线程不互相干扰,堆栈是独立的摘自:https://bbs.csdn.net/topics/50237947...原创 2021-07-02 19:40:47 · 1636 阅读 · 0 评论 -
C++和C#对比
内容摘自:https://blog.csdn.net/qq_38234381/article/details/115437997?spm=1001.2014.3001.5502https://blog.csdn.net/qq_38234381/article/details/104359385?spm=1001.2014.3001.5502C++和C#String是否是’\0’结尾:C++中没有规定string以’\0’结尾,但大部分编译器在实现时会为string结尾增加’\0’C#string并原创 2021-06-23 09:24:52 · 344 阅读 · 0 评论 -
动态链接和静态链接
首先明确无论静态链接和动态链接其作用都是将多个源程序编译形成的目标文件文件链接为一个可执行程序不同点在于:静态链接发生在形成可执行程序前,即编译之后的链接阶段,此时目标文件会被导入可执行程序中,即目标文件和可执行程序合并为一个文件动态链接发生在形成可执行程序后,即程序运行时,此时程序会根据需要从动态链接库中导入相应的目标文件,注意动态链接库并不作为程序的一部分,但每个动态链接的程序都需要一个动态链接库静态链接程序执行速度快(直接运行,不用链接),但浪费空间(目标文件和程序合并,多个程序用到相原创 2021-05-17 22:41:40 · 340 阅读 · 0 评论 -
类和结构初始化的写法及不同
//总结://C++中类与结构初始化的方式基本一致,如下://1.分为列表初始化和构造函数函数初始化(列表初始化在一定程度上与构造函数有关联)//2.列表和构造函数初始化按照写法的不同还可以再分,见代码//不同的地方有如下几个://1.类列表初始化只有当所有成员都为公有或有匹配的构造函数时才可以用(结构就是所有成员都是公有的类)//2.这点仅限于VS,即若结构没有显式初始化则VS不会通过,类显隐式都可以#include<iostream>using namespace st.原创 2021-05-06 20:34:41 · 121 阅读 · 0 评论 -
C++名称空间基本使用
1.当命名空间和用到它的方法在同一个文件时:#include<iostream>namespace Num{ int one = 1;}int main(){ //std::cout << Num::one; //只能直接用one //using Num::one; //std::cout << one; //可以直接使用命名空间中的所有变量 using namespace Num; std::cout << one原创 2021-05-05 19:25:26 · 115 阅读 · 0 评论 -
C++头文件包含的问题
问题:一个文件不要包含两个相同的头文件解决方式://在预编译阶段将忽略重复包含的该头文件,判断重复的依据是文件名是否相同#pragma once//如果定义了宏变量TEST_H_则忽略宏内命令,即虽然该重复的头文件被包含进去了,但是其中的关键内容却被忽略了,所以不会发生冲突#ifndef TEST_H_#define TEST_H_//头文件内容#endif头文件之间不要相互包含补充:两个cpp文件可以包含同一个头文件,这不会算作重复包含(它们在连接的时候才会相遇,原创 2021-05-05 17:52:24 · 490 阅读 · 0 评论 -
C++/C学习笔记
extern关键字:在同一文件中,可以在上文引用下文中出现的变量或方法如:变量:#include<stdio.h>int main(){ extern int num; num = 0; printf("%d\n", num); return 0;}int num;方法:同变量,但其实在同一文件中我们一般通过在上文声明下文定义的方法来解决不同文件中,可以在当前文件引用另一文件使用的方法和变量如:变量:1.c#include<.原创 2021-04-05 09:22:44 · 464 阅读 · 4 评论