问题列表 - 第41222页

C++:这个指针被覆盖了

请看一下我的源文件,它们有点太长了,不能在这里发布:

X11Painter.cpp: http://pastebin.com/gu4SrHUr

X11Painter.h: http://pastebin.com/3ktp1Fvn

在我看来,这堂课的行为很奇怪.

我有以下测试用例:

#include "X11Painter.h"
int main()
{
    X11Painter p ;
    p.show();
}
Run Code Online (Sandbox Code Playgroud)

用线编译它

g++ -O0 -g -o test2 test2.cpp X11Painter.cpp -lX11 -lXfixes -lXinerama
Run Code Online (Sandbox Code Playgroud)

只需运行它就可以执行以下操作:

this->some_test=1234
this->screen:0
1:: this->display='0x8b73008'; this->window='77594625'
width: 3200
0xbff91bdc
this->some_test=1234
this->some_test=3682292
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

我正在尝试映射X11窗口 X11Painter::show()

当我开始调查为什么X11Painter.cpp:83是segfaulting时,我发现大多数变量都被覆盖并且show()与构造函数中的变量完全不同.

我把它int some_test看看发生了什么.为什么地狱的价值会发生变化?

如果我这样做printf("%p\n", this),指针也会改变.我怀疑在某个地方,这个指针被覆盖了.但为什么会这样呢?用ddd调试告诉我,在退出构造函数的同时修改了this-> some_value.

使用测试类(具有公共构造函数的类,一个公共方法和一个私有变量)进行简短测试可以正常工作.

有没有人知道为什么会发生这种奇怪的事情?我知道堆栈中的变量会发生什么变化,但我们仍然在那里...

可能与X11库有关吗?

c++ x11 pointers segmentation-fault

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

如何在选择usercontrol时禁用ASP.NET页面中的控件?

我成功创建了一个用于显示错误消息的用户控件.现在一切正常但是当显示消息时,可以访问后台控件.如何禁用页面控件或页面单击或选择任何控件.当消息面板关闭时,它应该启用页面控件.

我找到了答案的朋友.

void DisableControls(Control parent, bool status)
    {
    foreach (Control c in parent.Controls)
            {
                if (c is DropDownList)
                {
                    ((DropDownList)(c)).Enabled = status;
                }
                if (c is Button)
                {
                    ((Button)(c)).Enabled = status;
                }
                if (c is TextBox)
                {
                    ((TextBox)c).Enabled = status;
                }

                if (c is RadioButton)
                {
                    ((RadioButton)c).Enabled = status;
                }
                if (c is ImageButton)
                {
                    ((ImageButton)c).Enabled = status;
                }
                if (c is CheckBox)
                {
                    ((CheckBox)c).Enabled = status;
                }
                if (c is DropDownList)
                {
                    ((DropDownList)c).Enabled = status;
                }
                if (c is …
Run Code Online (Sandbox Code Playgroud)

c# asp.net user-controls

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

打开 Mathematica 文件时检测到错误

上次当我想保存 Mathematica 文件时,有些事情很奇怪。现在,当我想打开我的文件时,需要很长时间,最后我只看到一些数据,而且我无法使用它。

我已在这里上传我的文件:

http://www.mediafire.com/?4etrrd3rauq0j59

您能否打开该文件并向我解释一下您是如何做到这一点并再次发送给我的?

很长一段时间后,Mathematica 中出现此消息:

下面命名的文件中似乎存在错误。您应该关闭它而不保存,然后选中“笔记本选项”对话框中的“打开时解析整个笔记本并将其加载到内存中”复选框。文件名:D:\App\Math\Unt.nb。

wolfram-mathematica

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

我的自定义Django模板过滤器的"无效过滤器"错误,但没有任何其他过滤器

我的Django项目中有一个python文件,其中包含自定义模板标记和自定义模板过滤器.

我的自定义标记用于template.loader.get_template()加载另一个模板文件.这很好用......直到我将自定义过滤器添加到加载的模板中.

现在我得到一个Django"Invalid Filter" TemplateSyntaxError异常.看看调用堆栈,Django无法加载我的模板过滤器.

事情变得奇怪了.我可以使用其他模板中的自定义过滤器.我可以在我的自定义标记加载的模板中使用任何其他过滤器.但是我不能在我自己的自定义标签中使用我自己的过滤器.

显而易见的原因是没有在我的模板HTML中加载我的自定义标记/过滤器文件,但我正确加载它.(因为当我不加载它时,我会得到一个不同的错误 - "无效的块标记")

我在Python 2.7上运行Django 1.2.3.

[顺便说一下,我终于找到了答案,但是我花了好几个小时才能在stackoverflow或google上的任何地方找到答案,所以我要回答我自己的问题,以便其他人不必浪费和我一样多的时间]

python django django-templates django-template-filters

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

实施Google App Engine中记录更改的高效审计跟踪 - 设计模式

我有一个很常见的设计问题:我需要为Google App Engine中的记录实现历史记录(审计跟踪).历史日志必须是结构化的,即我不能将所有更改加入到一些自由格式文本中并存储在字符串字段中.

我已经考虑了历史模型的以下选项,并且在注意到选项#1中的性能问题之后,我选择实现选项#3.但是,如果这个解决方案是高效和可扩展的,那么我们会有些怀疑.例如:随着选项#3中动态属性数量的增加,性能是否会显着下降?

您是否对每个选项的优缺点有更深入的了解,或者可以建议适用于Google App Engine数据库特征的其他审计跟踪设计模式?

  1. 使用经典SQL"master-detail"关系
    • 优点
      • 具有SQL背景的数据库开发人员易于理解
      • clean:历史记录及其属性的直接定义
      • 搜索性能:轻松搜索历史记录(可以使用索引)
      • 故障排除:管理工具轻松访问(_ah/admin)
    • 缺点
      • 通常不建议在GAE DB中以这种方式实现一对多关系
      • 读取性能:过多的记录读取操作以显示长的审计跟踪,例如在大记录列表的详细信息窗格中.
  2. 将历史存储在BLOB字段中(酸洗python结构)
    • 优点
      • 易于实施和灵活
      • 阅读性能:非常高效
    • 缺点
      • 查询性能:无法使用索引进行搜索
      • 故障排除:无法通过admin db viewer(_ah/admin)检查数据
      • 不洁净:不太容易理解/接受SQL开发人员(他们认为这很难看)
  3. 在Expando的动态属性中存储历史记录.例如,对于每个字段fieldName创建history_fieldName_n字段(其中n = <0..N>是一些历史记录)
    • 优点:
      • 简单:易于实现和理解
      • 故障排除:可以通过管理界面读取所有历史属性
      • 读取性能:一次读取操作以获取记录
    • 缺点:
      • 搜索性能:不能简单地搜索历史记录(它们有不同的名称)
      • 不太干净:初看时,属性数量可能会令人困惑
  4. 将历史记录存储在主记录的某些列表字段中.例如.为每个fieldName创建一个fieldName_history列表字段
    • 优点:
      • clean:直接定义历史属性
      • 简单:SQL开发人员易于理解
      • 读取性能:一次读取操作以获取记录
    • 缺点:
      • 搜索性能:可以使用搜索索引仅适用于只要有一定的价值,不能搜索在一些特定的时间具有值的组合记录记录;
      • 故障排除:在admin db viewer中检查列表很困难

python performance audit google-app-engine expando

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

如何使用jQuery更改textarea中的行数

我有一个5行的textarea.我想只显示一行,并且在焦点上它应显示剩余的4行.

javascript jquery textarea javascript-events

20
推荐指数
2
解决办法
3万
查看次数

通过onclick直接删除<li>

没有jc直接删除"li"的方法只需用onclick?

$go .="<li id=\"go_$id\"><a ondblclick=\"g('$id'); return false;\">$title</a>
             <a onclick=\"go('$id', 'g')\">(x)</a>
    </li>\n";
Run Code Online (Sandbox Code Playgroud)

我需要通过单击(x)来删除它,因此与我的其他函数(代码中的onclick函数)一起组合删除,以便"li"将消失onclick.

html javascript

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

用原始或智能指针在c ++中组合?

我想做的一个小例子.

我有一个(堆栈分配)顶点的列表

class Vertex {

    int id;
    double x;
    double y;
    double z;
};
Run Code Online (Sandbox Code Playgroud)

并想要创建边缘列表

class Edge {

    int id;
    Vertex * source;
    Vertex * target;
};
Run Code Online (Sandbox Code Playgroud)

两个指向其源和目标顶点的指针.

通常我会在这里找一个参考,但我希望能够在运行时更改源或目标顶点,所以我需要某种指针类型.

所以我的问题是:是否有一个智能指针在这里很有用,或者我应该只使用上面的普通指针?

编辑

解决了答案中出现的一些问题:

首先,列表应该拥有顶点,这就是它们在堆栈中的原因.

其次,ID用于其他程序.

它需要一个文件,其中包含所有顶点及其坐标的列表,以及所有边的列表及其两个顶点的ID.

第三,我需要某种指针,因为顶点的id在运行时会发生变化,而边缘的源和目标顶点可能会变为.

(其中包括进行某种切割和切片)

c++ oop smart-pointers composition

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

STA线程模式线程也会阻止winform UI线程?

我正在使用来自后台线程的STA COM对象,其中一个COM对象的方法将阻塞,当我从处于STA线程模式的新线程调用它时,因为COM对象的模式是STA,并且UI线程似乎也被阻止了,我可以避免这种UI阻止吗?

.net com sta winforms

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

我需要一个独立的python解释器/编译器!

好的,所以我需要一个python编译器(从.py或.pyw到.exe)。

我遇到的唯一的是:

-cx_freeze(无效)

-py2exe(太复杂了)

编辑:以上 两个程序对我来说都很复杂,因为您必须制作所有这些安装文件,并键入一堆参数和命令才能使它们工作,我发现了一个名为gui2exe.py的东西,但是我似乎无法让它正确加载...有什么想法吗?

所以我在寻找的是一个无需通过python命令行运行的程序。最好是一个独立程序,您可以选择文件并选择输出(.exe),然后单击“转换”。没有什么太复杂了,因为我刚刚开始。

我想要这个的原因是因为我有一个我的朋友想看一看的程序,但是他不想下载python来查看它。我也不希望他能够更改源代码。

有任何想法吗?

python compiler-construction

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