首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SDL2 DestroyRenderer SEGFAULT

SDL2 DestroyRenderer SEGFAULT
EN

Stack Overflow用户
提问于 2018-04-19 10:12:06
回答 1查看 281关注 0票数 0

我想出了一个我的程序在调用SDL_DestroyRenderer(SDL_Renderer* renderer);时抛出SEGFAULT的最小例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int Setup(t_game* game)
{
    if (SDL_Init(SDL_INIT_VIDEO) != 0)
    {
        fprintf(stderr, "Error Init SDL");
        return 0;
    }

    game->window = SDL_CreateWindow("Client",
                                    SDL_WINDOWPOS_UNDEFINED,
                                    SDL_WINDOWPOS_UNDEFINED,
                                    SCREEN_X,
                                    SCREEN_Y,
                                    SDL_WINDOW_SHOWN);

    game->renderer = SDL_CreateRenderer(game->window, -1, SDL_RENDERER_ACCELERATED);
    SDL_SetRenderDrawColor(game->renderer, 255, 0, 0, 255);

    return 1;
}

void Cleanup(t_game* game)
{  
    SDL_DestroyRenderer(game->renderer);

    SDL_DestroyWindow(game->window);
    SDL_Quit();
}

void Loop(t_game* game)
{
    SDL_Event event;
    int loop = 1;
    while (loop)
    {
        SDL_RenderClear(game->renderer);
        SDL_RenderPresent(game->renderer);
        loop = EventHandler(&event, game);
    }
}

主要调用的函数如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
    t_game game;
    Setup(&game);
    Loop(&game);
    Cleanup(&game);
    return 0;
}

游戏结构声明如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef struct s_game
{
    SDL_Renderer* renderer;
    SDL_Window* window;
} t_game;

在清理过程中,我得到一个SEGFAULT,上面写着无效的免费

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7ae1f9c in ?? () from /usr/lib/libSDL2-2.0.so.0
(gdb) bt
#0  0x00007ffff7ae1f9c in ?? () from /usr/lib/libSDL2-2.0.so.0
#1  0x00005555555554d0 in Cleanup (game=0x7fffffffdd90)
#2  0x00005555555555e9 in main (argc=1, argv=0x7fffffffdea8)

然而,在gdb中,在所有3个函数中设置断点之后,对于呈现器,我总是有相同的指针。

更新1: --如果我将所有三个函数放在一起,我就不再有错误了。更新2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int EventHandler(SDL_Event* event, t_game* game)
{
    while (SDL_PollEvent(event))
    {
        switch(event->type)
        {
            case SDL_QUIT:
                return 0;
                break;
            case SDL_KEYUP:
                switch (event->key.keysym.sym)
                {
                    case SDLK_ESCAPE:
                        return 0;
                }
        }
    }
    return 1;
}
EN

回答 1

Stack Overflow用户

发布于 2018-04-20 22:32:13

看来,hugepages在某种程度上干扰了SDL2,因为禁用它解决了无效的空闲错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49927590

复制
相关文章
CDO条件性选择数据
除了之前提到的选择操作符之外,CDO还提供了一些条件选择操作符。这在针对从多个文件中进行条件选取的时候就显得非常方便了。
bugsuse
2020/04/21
3.5K0
CDO条件性选择数据
3 - SQL Server 2008 之 使用SQL语句删除约束条件
《3 - SQL Server 2008 之 使用SQL语句删除约束条件》介绍了如何使用SQL语句删除SQL Server 2008中的约束条件。基本语法为ALTER TABLE 表名 DROP CONSTRAINT 约束名1,约束名2……。如果删除一个约束,不需要逗号后的约束名,如果删除两个及两个以上的约束,必须以逗号隔开。例如,删除Employee表中的FK_PersonID外键约束及PK_EmployeeID主键约束的代码为:USE PersonInfo;GO;ALTER TABLE Employee DROP CONSTRAINT FK_PersonID,PK_EmployeeID;GO。该文还介绍了如何利用工具生成SQL语句删除约束条件,以及如何使用视图和T-SQL语句删除约束条件。"
CNXY
2017/12/25
1.5K0
3 - SQL Server 2008 之 使用SQL语句删除约束条件
moebius for sql server下载_大数据集群规模选择
  Moebius集群采用无共享磁盘架构设计,各个机器可以不连接一个共享的设备,数据可以存储在每个机器自己的存储介质中。这样每个机器就不需要硬件上的偶合,只需要能够互相连通。
全栈程序员站长
2022/09/20
4190
moebius for sql server下载_大数据集群规模选择
SQL Server中网络协议的比较与选择
若要连接到 SQL Server 数据库引擎,必须启用网络协议。MicrosoftSQL Server 可同时通过多种协议处理请求。客户端用单个协议连接到 SQL Server。如果客户端程序不知道 SQL Server 正在侦听哪个协议,可以配置客户端按顺序尝试多个协议。使用 SQL Server 配置管理器启用、禁用以及配置网络协议。
阳光岛主
2019/02/19
1.6K0
当SQL Server爱上Linux:配置 SQL Server 2017 上的可用性组初体验
作者 | 张乐奕:Oracle ACE 总监,ACOUG (中国 Oracle 用户组)联合发起人。Oracle 数据库高可用解决方案与 Exadata 一体机专家。长于数据库故障诊断,性能调优。作为多家知名论坛版主,热衷社区技术分享,同时也是 Exadata 用户组的发起人,组织策划并作为技术分享者的活动已超过百场。
数据和云
2018/07/27
1.2K0
当SQL Server爱上Linux:配置 SQL Server 2017 上的可用性组初体验
条件选择css
效果图: image.png 1. CSS <style> .select_row{ float:left;width:100%; height:22px; margin-bottom:5px} .select_row a{height:auto; display:block;font-size:13px; text-align:center} .col_blue{color:#06c} .select_condition{ width:80px; float:left; height:
week
2018/08/27
4760
条件选择css
2 - SQL Server 2008 之 使用SQL语句为现有表添加约束条件
本文介绍了如何使用 SQL Server 2008 中的约束条件,为现有表添加条件约束。首先介绍了如何在创建表的同时添加条件约束,然后介绍了如何在表创建完成后添加条件约束。通过使用 ALTER TABLE 语句,可以创建主键约束、检查约束、默认约束和唯一约束。同时,还介绍了如何创建外键约束,以实现表之间的关联。
CNXY
2017/12/25
1.4K0
2 - SQL Server 2008 之 使用SQL语句为现有表添加约束条件
sql server
SQLServer是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是2017年份推出的SQL SERVER 2017。
ellipse
2019/08/16
2.3K0
SQL Server 2012学习笔记 (三) ----- SQL Server SQL语句
  在很多情况下,可以用CREATE TABLE语句创建数据表、使用ALTER TABLE语句修改表结构、使用DROP TABLE语句删除表;
挽风
2021/04/13
6.5K0
SQL Server 2012学习笔记 (三) ----- SQL Server SQL语句
Sql Server 分区sql
USE [master] GO if exists (select from sys.databases where name = 'Test_1') drop database Test_1 GO --创建新库,要演练分区所以我们会多创建两个文件组Test_A,Test_B,以便在后面的分区方案中使用。 CREATE DATABASE [Test_1] ON PRIMARY ( NAME = N'test_1', FILENAME = N'D:\sqldata\test_1.mdf' , SIZE
用户8983410
2021/11/01
3.3K0
1 - SQL Server 2008 之 使用SQL语句创建具有约束条件的表
本文介绍了SQL Server 2008中创建具有约束条件的表的方法。文章首先介绍了约束条件的六种类型,然后通过实例演示了如何使用这些约束条件来确保数据的完整性和唯一性。最后,文章介绍了如何创建具有约束条件的表,并使用检查约束来确保数据的完整性。
CNXY
2017/12/25
2.9K0
1 - SQL Server 2008 之 使用SQL语句创建具有约束条件的表
【SQL Server on Linux】Linux下安装SQL Server
前天听Mr.Ding说Linux上也可以安装SqlServer了,正好学习.net也需要安装SqlServer,正好安装Mr.Ding的教程走一遍,反正服务器也是闲着,可着劲折腾去吧。
浩Coding
2019/07/02
4.2K0
【SQL Server on Linux】Linux下安装SQL Server
SQL Server安全(1/11):SQL Server安全概述
在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切。但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念。这篇文章提供了基础,因此你可以对SQL Server里的安全功能充分利用,不用在面对特定威胁,不能保护你数据的功能上浪费时间。 从让人眼花缭乱的客户端使用连接,通过到处分布的网络,尤其是互联网,关系数据库在各种应用程序里广泛使用。这使数据对任何人,在任何地方都可访问。数据库可以保存人类知识的很大部分,包括高度敏感的个人信息和让国际商务工作的关键数据。 对
逸鹏
2018/04/10
2.4K0
SQL Server安全(1/11):SQL Server安全概述
条件语言模型中的OOD检测与选择性生成
在conditional language model(CLM)任务(主要是summarization,translation)中,而由于language generation主要是通过auto-regressive的方式,错误更容易积累,因此OOD问题可能更严重。
beyondGuo
2023/02/13
1.5K0
条件语言模型中的OOD检测与选择性生成
SQL Server 2012学习笔记 (七) ------ SQL Server 游标
  静态游标的完整结果集在游标打开时建立在tempdb中。静态游标总是按照游标打开时的原样显示结果集。静态游标在滚动期间很少或根本检测不到变化,虽然它在tempdb中存储了整个游标,但消耗的资源很少。尽管动态游标使用tempdb的程度最低,在滚动期间它能够检测到所有变化,但消耗的资源也更多。键集驱动游标介于二者之间,它能检测到大部分的变化,但比动态游标消耗更少的资源。
挽风
2021/04/13
2.1K0
SQL Server 复制进阶:Level 1 - SQL Server 复制
塞巴斯蒂安·梅内,2012/12/26 关于系列 本文是属于Stairway系列:Stairway to SQL Server Replication SQL复制可以解决运行数据库驱动的应用程序中的许多问题。 出版/订阅者模型并不完全容易理解,脚本和监控复制系统的复杂性需要考虑。 在这里,最后是一系列文章,注意为所有类型的SQL Server复制生成一个无行话的方法。 级别1:SQL Server复制简介 主要条目:rep-li-ca-tion 发音:?re-pl? - 'ka-sh?n \ 功能:名词 日
Woodson
2018/07/19
2.8K0
SQL Server 2012学习笔记 (二) ----- SQL Server Transact-SQL
  T-SQL(Transact Structured Query Language)是标准的Microsoft SQL Server 的扩展。是标准的SQL程序设计语言的增强版,是用来让程序与SQL Server 沟通的主要语言。
挽风
2021/04/13
2.6K0
SQL Server 2012学习笔记 (二) ----- SQL Server Transact-SQL
SQL Server常用Sql语句
30.使用COMPUTE BY子句可以对BY后面给出的列进行分组分组显示,并进行列的小计
Sindsun
2019/12/06
5.3K0
管理sql server表数据_sql server如何使用
表是SQL Server中最基本的数据库对象,用于存储数据的一种逻辑结构,由行和列组成, 它又称为二维表。 例如,在学生成绩管理系统中,表1–是一个学生表(student)。
全栈程序员站长
2022/09/23
1.8K0
管理sql server表数据_sql server如何使用
SQL Server性能优化工具SQL Server Profiler。
1、点击[工具] 2、点击[SQL Server Profiler] 3、点击[连接] 4、点击[事件选择] 5、点击[RPC:Completed] 6、点击[列筛选项] 7、点击[类似于] 8、点击[TextData] 9、点击[类似于] 10、点击[确定] 11、点击[运行] 12、点击[X] 13、点击[数据库引擎优化顾问] 14、点击[连接] 15、点击[Start Analysis]
裴来凡
2022/05/28
1.8K0
SQL Server性能优化工具SQL Server Profiler。

相似问题

SQL server条件选择语句

61

SQL Server中条件的可选性

21

SQL Server:选择多个表/条件

30

SQL Server CTE选择多个条件

21

根据条件选择列SQL Server

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文