编辑:更新了一些新信息(Bold'ed).此外,代码和Valgrinds输出已更新.
我最近开始使用SDL2作为我的图形库.在开发了一些东西之后,我决定运行Valgrind并发现我正在泄漏记忆......很多记忆.
缩小范围后,我编译了这段代码(在C中):
#include <SDL2/SDL.h>
int main(int argc, char** argv)
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_QuitSubSystem(SDL_INIT_EVERYTHING);
SDL_Quit();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是make文件:
CC = gcc
CCFLAGS = -Wall -o0
LDFLAGS = -lSDL2
SOURCES= main.c
OBJECTS=$(SOURCES:.c=.o)
EXE = Test
.PHONY:
all: $(OBJECTS)
$(CC) $(OBJECTS) $(CCFLAGS) $(LDFLAGS) -o $(EXE)
clean:
rm $(OBJECTS) $(EXE)
Run Code Online (Sandbox Code Playgroud)
得到这个Valgrind错误:
==30933== Memcheck, a memory error detector
==30933== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==30933== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info …Run Code Online (Sandbox Code Playgroud) 好吧,你好.
我是c +的新手,我遇到了一些问题,我不确定是什么导致了这些问题.这是我的主要内容:
#include "GameWindow.h"
int main(void)
{
GameWindow * game_window = new GameWindow(true);
/* loop the game */
while (game_window->GetRunning())
{
// update
game_window->Update();
// draw
game_window->Draw();
}
delete game_window;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的标题:
class GameWindow
{
private:
bool _running;
//GLFWwindow* _window;
public:
void SetRunning(bool new_val);
bool GetRunning();
GameWindow(bool running);
void Draw();
void Update();
}
Run Code Online (Sandbox Code Playgroud)
和我的c ++文件:
#include "GameWindow.h"
void GameWindow::SetRunning(bool new_val)
{
_running = new_val;
}
bool GameWindow::GetRunning()
{
return _running;
}
GameWindow::GameWindow(bool running) :
_running(running)
{
} …Run Code Online (Sandbox Code Playgroud)