我想知道与C和C++相关的常见内存管理问题是什么.我们如何调试这些错误.
我知道的很少
1)未初始化的变量使用
2)删除指针两次
3)写出数组越界
4)未能释放内存
5)比赛条件
1)malloc传回一个NULL指针.您需要将此指针强制转换为您想要的任何内容.
2)对于字符串,需要为结束字符分配一个额外的字节.
3)双指针.
4)(删除和malloc)和(免费和新)不一起去
5)查看实际函数在失败时返回(返回代码)的内容,如果失败则释放内存.6)检查大小分配内存malloc(func +1)
7)检查你如何通过双pointe**ptr来运行
8)检查行为未定义函数调用的数据大小
9)内存分配失败
有没有办法抑制Doxygen对特定文件提供"未记录"的警告?我的项目有几个自动生成的代码头,导致它抛出数百或数千个错误,使得难以筛选.
我有一个MMORPG模拟器,这意味着它将处理相当多的数据包.目前,我正在使用指针,因为我认为正确使用它们可以加快我的服务器,但是我有两个朋友,一个告诉我使用指针,他认为我可以使用它们而不会遇到麻烦,我的其他朋友说我不应该使用指针,因为它们可能会使我的服务器崩溃,它们不安全,并且它们不易管理.
我使用结构作为我的数据包结构,所以例如我可以使用以下行获取它的类型:Ptr-> Type;
你怎么看?
我收拾了我的iPhone应用程序.我只是担心我们的Web服务器级别的安全性.数据正通过网络服务转移到iphone应用程序.
我可以对Web服务采取哪些安全措施,以便我不容易受到攻击?
谢谢
我有一个Windows窗体应用程序,我需要在一个单独的文件中配置所有UI元素的所有字体.即我希望能够指定标签具有字体"TitleBarBoldFont",该字体将解析为真实字体,具体取决于当前的区域设置.配置文件可能包含相应的部分,如下所示:
<Font fontID="TitleBarBoldFont">
<Display facename="Helvetica" pointSize="12">
<Override lang="ja" facename="Meiryo Bold" pointSize="12"/>
<Override lang="zh" facename="SimHei" pointSize="12"/>
<Override lang="ru" facename="Arial Bold" pointSize="12"/>
</Display>
</Font>
Run Code Online (Sandbox Code Playgroud)
我的问题是:是否有一种标准的.NET/Windows Forms方法来实现这一点,以便我可以在WinForms设计器中指定我的自定义字体,而不必为代码中的每个GUI元素显式调用字体解析方法?
我如何调整这个以使用localtime获取昨天的日期?
use strict;
sub spGetCurrentDateTime;
print spGetCurrentDateTime;
sub spGetCurrentDateTime {
my ($sec, $min, $hour, $mday, $mon, $year) = localtime();
my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
my $currentDateTime = sprintf "%s %02d %4d", $abbr[$mon], $mday, $year+1900; #Returns => 'Aug 17 2010'
return $currentDateTime;
}
Run Code Online (Sandbox Code Playgroud)
〜
我在Linux上运行了一个C文件.它以红色(失败)打印一些线条,以绿色(通过)打印一些线条.正如您所料,它在printf语句中使用转义码,如下所示:
#define BLACK "\033[22;30m"
#define GREEN "\033[22;31m"
printf(GREEN "this will show up green" BLACK "\n");
Run Code Online (Sandbox Code Playgroud)
如果最后的BLACK不存在,终端文本将继续为所有内容为绿色.如果你没有抓住它,那对于具有非黑色背景的终端窗口来说没问题,但是否则你最终会得到黑底黑字.不好!运行程序有这个问题,捕获文本文件中的输出,然后使用"更多"或"更少"查看文件也是如此.
是否有代码恢复默认值而不是在printf语句的末尾指定颜色?这需要在C中,但我有兴趣阅读其他方法.
更新: 谢谢大家.您的回复帮助我在其他地方找到更有用的信息.我更新了我的宏如下(注意31是红色的,我修正了下面的拼写错误):
#define RESET_COLOR "\e[m"
#define MAKE_GREEN "\e[32m"
printf(MAKE_GREEN "this will show up green" RESET_COLOR "\n");
Run Code Online (Sandbox Code Playgroud)
我发现以下链接有助于理解这些代码的工作原理:
http://www.phwinfo.com/forum/comp-unix-shell/450861-bash-shell-escapes-not-working-via-putty-ssh.html 解释了这些转义序列的作用,并在可移植性时使用ncurses需要.
http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-6.html
http://bluesock.org/~willg/dev/ansi.html显示更多的转义序列; 有用的了解大局
我正在尝试调试预处理的T4模板,我无法进入通过运行预处理模板创建的类.我能够创建一个类的实例,但是一旦我尝试在调试时进入,就会弹出一个新窗口
没有可用的来源.当前位置没有可用的源代码.
我的理解是,预处理模板可以像普通的c#类一样进行调试,这不正确吗?为了能够进入由预处理模板定义的类,您需要做些什么吗?
这是一个非常简单的模板和我遇到问题的调用代码:
TestPreprocessedTemplate.tt:
<#@ template language="C#" debug="true" #>
Hello <# Write("World"); #>
Run Code Online (Sandbox Code Playgroud)
测试代码:
var template = new TestPreprocessedTemplate();
string test = template.TransformText();
Run Code Online (Sandbox Code Playgroud)
编辑 - 根据下面的建议添加了debug ="true"语句,仍然有同样的问题.
更新 - 我也在MSDN论坛上发布了这个问题,并收到了MS员工的回复,表明我上面描述的内容应该确实有效.还有其他人遇到过这个问题吗?
更新 - 在MSDN论坛的帮助下,问题在于将#line指令添加到生成的c#类中.评论它们允许我按预期逐步执行代码.有没有办法阻止这些指令被添加到生成的类?使用ASP.NET页面,您可以添加LinePragmas ="false"参数,但这似乎对T4模板没有任何影响.有任何想法吗?
我刚收到要求对我们正在创建的Web应用程序执行拼写检查的要求.我知道所有关于FF,Chrome,IESpell等等,但这个是客户的要求.
鉴于实现此类(实时)的唯一方法是使用JavaScript库,我想知道有没有人尝试过任何开源的?他们有什么好处吗?一般来说,这种方法可以说什么类型的好/坏事情?
我想进入这个阶段,我反对它,因为对于最终用户的机器而言,这只是为了一点点好处而做的更多工作.我想我的意思是,它将是一个不断做某事的脚本,而不是AJAX请求或快速div更新,这可能导致我们的应用程序看似糟糕的性能,即使它是一个拼写检查器检查每个输入页面上的字段.似乎还有很多空间让javascript错误导致整个网站停滞不前.
思考?
c# ×3
c++ ×3
c ×2
.net ×1
colors ×1
destructor ×1
doxygen ×1
iphone ×1
javascript ×1
linux ×1
localtime ×1
perl ×1
pointers ×1
requirements ×1
security ×1
t4 ×1
terminal ×1
unsafe ×1
web-services ×1
winforms ×1