Tag: C#的

为什么在bin \ Debug中运行exe时,不会抛出跨线程操作exception

我正在debugging应用程序,并在代码中的某个地方,一个线程试图到达另一个线程创build的列表框。 在尝试访问列表框时,应用程序抛出一个“跨线程操作无效:控制” 列表框 “从一个线程访问,而不是在线程上创build的线程”。 但是,当我在bin \ Debug文件夹中运行此应用程序的输出时,我没有得到一个exception对话框,我可以看到列表框是从非所有者线程成功访问的,所以这使我认为这里有一个行为差异,而不仅仅是一个压制的例外。 我可以通过在form_load事件中的以下行来debugging这个exception Control.CheckForIllegalCrossThreadCalls = false; 但是这种不同的行为背后的原因是什么?

无法步入.NET框架源代码

我正在使用Visual Studio 2013,并有一个.NET 4.5.2项目。 我已经按照以下页面设置了我的设置: http://referencesource.microsoft.com/setup.html 通过这个设置,我可以看到所有必要的符号都被下载并加载了,但是我不能进入如下代码: var cookieContainer = new System.Net.CookieContainer(); 我得到一个来源不可用消息。 我可以进入下面的代码就好了: Console.WriteLine("test"); 你有什么想法,为什么我可以从mscorlib.dll代码,但不能从System.dll代码进入?

这是无限的recursionUB吗?

在C ++ 11中,作为一个没有副作用的死循环,下面的程序是UB: int main() { while (true) {} } 以下也是UB吗? void foo() { foo(); } int main() { foo(); } 从这两个scheme的标准引用将是理想的。

variables名$?

我偶然发现了一些(c ++)代码: int $T$S; 首先,我认为这是某种PHP代码或错误的粘贴在那里,但它编译和运行良好(在MSVC 2008)。 什么样的字符对C ++中的variables有效,还有其他奇怪的字符可以使用吗?

使用reflection发现派生types

使用reflection,是否有可能发现从给定types派生的所有types? 据推测,范围将被限制在一个单一的大会。

关于如何调用一个向量来改变容量,标准说的是什么?

本网站暗示,清除vector可能会改变容量: http://en.cppreference.com/w/cpp/container/vector/clear 在调用clear()之后,许多实现不会释放分配的内存,实际上将vector的capacity()保持不变。 但根据詹姆斯·坎泽的说法,这是错误的,标准要求明确不会改变能力。 标准说什么?

不能调零?

为什么X % 0是一个无效的expression式? 我一直认为X % 0应该等于X.既然你不能被零除,那么答案不应该是剩下的剩余,X(剩下的一切)?

在scanf(或)printf中错误的格式说明符

就printf函数而言,我从less数参考和实验中了解以下内容。 当我们试图打印一个整数值与格式说明符用于浮动(或)双和反之亦然行为是不可预知的 。 但可以使用%c来打印整数值的字符。 也可以使用%d来打印字符的ASCII值(整数表示)。 类似地,如果格式说明符和传递给scanf的参数不匹配 , scanf的行为是什么。 标准是否定义了它?

在初始化程序列表中,同一个variables的多个variables是未定义的行为

考虑下面的代码: int main() { int count = 0 ; int arrInt[2] = { count++, count++ } ; return 0 ; } 如果我们使用clang -std=c++03编译代码,则会产生以下警告( 现场示例 ): warning: multiple unsequenced modifications to 'count' [-Wunsequenced] int arrInt[2] = { count++, count++ } ; ^ ~~ 我不提倡这样的代码,但是类似的代码出现在另一个问题上,并且根据标准的C ++ 11是否定义了代码 。 在C ++ 11中,此行为是根据初始化程序列表中的多个突变未定义的行为定义的行为 ,实际上,如果使用-std=c++11则警告消失。 如果我们看一个预先的C ++ 11 草案标准,它不具有相同的语言覆盖初始化列表,所以看起来我们留下了Chapter 5 […]

分配更多的内存比使用malloc存在

这个代码片段每次从stdin中读取字母“u”时将分配2Gb,并且在读取“a”时将初始化所有分配的字符。 #include <iostream> #include <stdlib.h> #include <stdio.h> #include <vector> #define bytes 2147483648 using namespace std; int main() { char input [1]; vector<char *> activate; while(input[0] != 'q') { gets (input); if(input[0] == 'u') { char *m = (char*)malloc(bytes); if(m == NULL) cout << "cant allocate mem" << endl; else cout << "ok" << endl; activate.push_back(m); […]