这段代码有什么原因吗:
int main(int argc, char* argv[])
{
Main::Init();
std::thread worker(Main::Mainloop);
worker.join();
Main::Free();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
应该与此处的代码不同:
int main(int argc, char* argv[])
{
Main::Init();
Main::Mainloop();
Main::Free();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注意Main该类被定义为单例,这里是代码:
main.h
#pragma once
#ifndef MAIN_H
#define MAIN_H
#include "window.h"
#include "mainloop.h"
class Main ///Singleton
{
public:
Main(const Main&) = delete;
Main(Main&&) = delete;
Main& operator=(const Main&) = delete;
Main& operator=(Main&&) = delete;
private:
Main();
static Main& Get_Instance();
friend int main(int argc, char* argv[]);
static void Mainloop();
static void Init(); …Run Code Online (Sandbox Code Playgroud) 我一直在玩 GLFW、OpenGL、SDL2 以及其他用于制作 GUI 和游戏的东西,但无论我做什么,实际应用程序本身都使用大约 20mb ram,显示器上什么也没有,只是一个空白程序。与此相反,与相同cmd,任务管理器中的记事本在实际程序本身运行时使用了 0.1-0.2mb 的内存?
在某种意义上与 Cmd 相同,它使用大约 0.4mb。如果使用 windows API 制作窗口的最基线库使用至少 20mb,这怎么可能?你能做些什么来制作一个程序,比如记事本,它的制作方式(即使用小于 1mb ram)。
这似乎很奇怪,因为它需要加载字体,然后是文本的纹理,仅在一个简单的 SDL2 程序中就使用至少 5mb ram 来处理我在记事本中的文本大小的纹理,更不用说 30mb 或所以 ram 它使用并释放加载字体。
我是否缺少一些在 Windows、Linux 和 mac 中制作应用程序的特殊方法,因为它们的文本编辑器也使用与记事本几乎相同的方式。
任何回应将不胜感激:)!
哪个会更快?
std::vector< std::string > vec;
vec.reserve(10);
for (int i=0; i < 10; i++){
vec.emplace_back("Some text");
}
Run Code Online (Sandbox Code Playgroud)
或者
std::vector< std::string > vec;
vec.resize(10);
for (int i=0; i < 10; i++){
vec[i] = "Some Text";
}
Run Code Online (Sandbox Code Playgroud)
如果其中一个比另一个更快(大小为 10),哪一个更具可扩展性?
下面的代码崩溃了,但是我很困惑它是如何被允许的。
int* var = new int;
int num = 10;
var = #
std::cout << *var << ", " << num << std::endl;
delete var;
std::cout << "Program finished" << std::endl;
Run Code Online (Sandbox Code Playgroud)
我改变了var指向的事实是否会导致内存泄漏?如果是这样,它是否会导致无法从第 3 行开始修复的内存泄漏?如果没有,你怎么能删除这段记忆?