小编Jen*_*rer的帖子

什么是适用于Windows/C++的优秀2D图形绘制API?

我一直在研究一个小应用程序,我一直在使用DirectX/3D在屏幕上绘制纹理(所有二维元素).我发现,API很容易使用,并且使用OOP原则进行合并,但是我不禁觉得在这个小的东西上使用DirectX是疯狂的过度杀戮.

不过,我似乎无法就一个好的选择找到共识.有什么建议?

编辑:本机alpha混合和PNG文件支持是必要的.

Jengerer拥有很多先发制人的爱

c++ windows api directx drawing2d

8
推荐指数
2
解决办法
5820
查看次数

C/C++字符串内存泄漏?

我在我string的应用程序中使用STL ,我最近测试它是否存在内存泄漏,我注意到我的很多字符串在程序结束时没有被正确释放.

我用其中一个字符串测试了下面的代码(不是逐字):

const string* cppString = &obj->objString;
const char* cString = cppString->c_str();
delete obj;
Run Code Online (Sandbox Code Playgroud)

在那之后,我把一个破发点,并注意到,虽然stringcppString指向不再存在,cString仍然指向C风格的字符串,这肯定不够的,是未能在年底被释放的人.

我是否遗漏了C/C++字符串的工作方式?如何才能获取要解除分配的字符串的C表示?

编辑:更多信息.我的obj类是Dialog继承的类型Popup.我认为这可能是它,因为当我删除时obj,我将其视为一个Popup*,但我在一个小的单独程序中尝试它,并删除作为父类正确删除子成员变量(这是有道理的,课程).

我在VS中使用了内存泄漏跟踪,它显示最终泄漏的字符串是我创建时创建的字符串,Dialog并设置objString为作为对构造函数的引用传递的字符串.

谢谢,
Jengerer

c c++ memory string memory-leaks

8
推荐指数
1
解决办法
5969
查看次数

始终返回成员变量getter的引用是一个好主意吗?

如果我有一个包含许多int,floatenum成员变量的类,那么将它们作为引用而不是副本返回它是否被认为是有效和/或良好的做法,并返回不应该进行更改的常量引用?或者我有理由将它们作为副本归还吗?

c++ getter class member-variables

5
推荐指数
1
解决办法
823
查看次数

何时更适合使用DIV而不是TABLE,反之亦然?

在使用DIV标签而不是TABLE在网页上分离/组织内容时,我注意到了一种常规的变化.在什么情况下使用比另一种更合适?

澄清:这个问题既普遍又具体,因为我主要寻找哪种更适合页面布局.

html css html-table

5
推荐指数
1
解决办法
1672
查看次数

内存处理(即函数Release)究竟如何与Direct3D一起使用?

我遇到了我的Direct3D应用程序中的泄漏,我最终纠正了它,但我认为泄漏的原因是由于我对Direct3D如何处理其内存和接口的误解.

我无法找到关于它的权威文章/教程(请提供一个,如果你有一个),但从我收集的,它的工作原理如下:

  • 每次调用Get方法时,返回的对象的引用数量都会增加.因此,如果我调用GetRenderTarget,渲染的表面的引用计数会递增.
  • 调用Release接口会减少其引用计数.前两个点的组合基本上意味着:每次获得界面时,请在完成后释放它.
  • 当引用计数达到0时,将删除该实例.

我不完全确定这是否正确,但似乎在实践中有效.如果有人能澄清/确认它是如何运作的,那就太好了.

PS,在发布接口时是否有任何保护措施?Release在后台缓冲区上调用任意次数似乎没有造成任何损害(这是一件好事,但我不确定为什么不这样做).

c++ memory directx direct3d

5
推荐指数
1
解决办法
1336
查看次数

Struts 2:从defaultStack拦截器中排除验证方法

我希望能够在Struts 2中禁用一个动作的表单验证,但是其余的拦截器堆栈仍然可以运行.

我有一个拦截器,它检查用户是否已登录,我总是希望执行,但对于某些操作(例如输入信息),我不希望validate调用该操作.

我试过做类似以下的事情:

<interceptors>

    <interceptor name="bankingAuthenticator"
        class="csc309.a4.banking.BankUserAuthenticator"/>

    <interceptor-stack name="secureBanking">
        <interceptor-ref name="bankingAuthenticator"/>
        <interceptor-ref name="defaultStack"/>
    </interceptor-stack>

</interceptors>

<default-interceptor-ref name="secureBanking"/>

<action name="Deposit!*" method="{1}" class="csc309.a4.banking.Deposit">
    <result name="success">/banking/Deposit.jsp</result>
    <interceptor-ref name="defaultStack">
        <param name="workflow.excludeMethods">choose</param>
    </interceptor-ref>
</action>
Run Code Online (Sandbox Code Playgroud)

但它在bankingAuthenticator拦截器和验证上都会跳过.

struts2 interceptor interceptorstack

4
推荐指数
1
解决办法
3538
查看次数

使用OpenGL进行像素完美的2D渲染

是否可以设置OpenGL场景以实现像素完美渲染和像素blitting?我注意到通过以下方式设置场景:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, width, height, 0.0, 0.0, 1.0);
Run Code Online (Sandbox Code Playgroud)

然后使用以下方法绘制像素:

glBegin(GL_POINTS);
glVertex2i(0, 0);
glEnd();
Run Code Online (Sandbox Code Playgroud)

难道不是一直画到每个硬件配置的左上角的像素(有时是一个像素向左,或者一个下面的左上角).我意识到这可能是由于图形驱动程序对OpenGL的不同实现,但是有没有办法让左上角的像素为(0,0),右下角为(width-1,height-1) )始终如一?这有点不标准化似乎很奇怪......

我见过一些使用(0.375,0.375)或(0.5,0.5)翻译的'hacks',但这似乎也解决了一些配置而不是其他配置.

c opengl

4
推荐指数
1
解决办法
2523
查看次数

Subversion svn:externals文件覆盖?

我有一个我的项目的存储库,它有一个嵌套的存储库,使用该svn:externals属性来更新外部库中的文件.问题是我需要从这个库中的一个标题中注释掉一个函数声明,并使用根存储库携带修改后的标题.

有没有办法可以做到这一点,所以当库更新时,它会覆盖我的版本的特定文件?

svn overriding file svn-externals

3
推荐指数
1
解决办法
1782
查看次数

PHP表单的SQL注入威胁?

我试图在PHP中证明需要准备好的语句,但是我遇到了一些问题,因为PHP通过表单传递字符串来做一些方便的奇怪事情.

我试图"破解"的陈述很简单:

SELECT username FROM users WHERE username = '$username' AND password = '$password'

但是做一些像X' or TRUE;--输入密码的东西实际上并不起作用,因为PHP会自动转义单引号并将语句转换为:

SELECT username FROM users WHERE username = '$username' AND password = 'X\' or TRUE;--'

由于单引号转义,密码相等性保持不变.这种说法是否安全?如果没有,它怎么能被打破?

php sql sql-injection

3
推荐指数
1
解决办法
107
查看次数

为什么boost :: thread :: join看似如此昂贵?

我最近刚开始与多线程工作boost::thread,我还是有点不清楚一些细节,但是从我的理解,thread::join是当你想要的"父"线程被阻塞并等待线程完成使用(我确定它还有更多,但我相信这是一个用途).

在我正在编写的程序中,我有一个线程加载了一堆资源,然后在最后一行,将其状态设置为'finished'.主线程等待此状态然后调用join,但它似乎需要大约2秒才能解除阻塞.

有这个原因,还是我做错了什么?

c++ multithreading boost

1
推荐指数
1
解决办法
328
查看次数