
1、new与malloc的区别new:new首先会去调用operator new函数,申请足够的内存(大多数底层用malloc实现),然后调用类型的构造函数来初始化变量,最后返回自定义类型的指针,delete先调用析构函数,然后调用operator delete函数释放内存(大多数底层用free实现)__cdecl 是C Declaration的缩写(declaration,声明)malloc:malloc是库函数,只能申请内存,没有初始化功能所以new与malloc最大的区别就是new能进行构造函数初始化2、strcpy、sprintf、memcpy的区别strcpy:用于将一个字符串复制到另一个字符串中sprintf:sprintf函数用于将格式化的字符串输出到一个字符数组中char str[10]; int num = 4; sprintf(str, "number is %d", num); printf("%s\n", str); // 输出 number is 4memcpy:用于将一个内存地址的数据复制到另一个内存地址中3、子弹穿墙问题子弹向前打出一个身位长的射线,若打到了墙面则开始计算子弹与墙的距离,在通过距离除以速度算出时间,时间过后则进行碰撞4、UE4如何切关卡后保留数据存放在GameInstancesubsystem中,不要存在gameinstance内,这样会导致项目臃肿5、UE4客户端能否使用AIController不可以,在DS(dedicated server)模型下,AIController只存在于服务端,其主要是通过在服务端对Pawn进行操控,然后再同步到客户端。6、Blueprintable与NotBlueprintable将C++类加入蓝图类如果为NotBlueprintable则不能被蓝图化7、BlueprintImplementEvent与BlueprintNativeEvent的区别如果实现了蓝图,那么C++的Implement接口则不调用如果没写蓝图接口则调用C++接口而BlueprintImplementEvent只是做接口给蓝图,不拓展C++接口。8、C++类中默认有什么函数1、构造函数2、拷贝构造函数3、析构函数4、重载赋值运算符函数9、UE4生命周期从先到后:UGameEngine-GameInstance-World和WorldContext-PersistentLevel-GameMode-GameState-PlayerController-PlayerState-HUD-Character在UGameEngine(继承自UEngine)首先UEngine的子类有UGameEngine和UEditorEngine,UEngine中的GEngine有访问UE的全局资源,是一个很重要的指针。void UGameEngine::Init(IEngineLoop* InEngineLoop) { DECLARE_SCOPE_CYCLE_COUNTER(TEXT("UGameEngine Init"), STAT_GameEngineStartup, STATGROUP_LoadTime); // Call base. UEngine::Init(InEngineLoop); #if USE_NETWORK_PROFILER FString NetworkProfilerTag; if( FParse::Value(FCommandLine::Get(), TEXT("NETWORKPROFILER="), NetworkProfilerTag ) ) { GNetworkProfiler.EnableTracking(true); } #endif // Load and apply user game settings GetGameUserSettings()-LoadSettings(); GetGameUserSettings()-ApplyNonResolutionSettings(); // Create game instance. For GameEngine, this should be the only GameInstance that ever gets created. { FSoftClassPath GameInstanceClassName = GetDefaultUGameMapsSettings()-GameInstanceClass; UClass* GameInstanceClass = (GameInstanceClassName.IsValid() ? LoadObjectUClass(NULL, *GameInstanceClassName.ToString()) : UGameInstance::StaticClass()); if (GameInstanceClass == nullptr) { UE_LOG(LogEngine, Error, TEXT("Unable to load GameInstance Class '%s'. Falling back to generic UGameInstance."), *GameInstanceClassName.ToString()); GameInstanceClass =