Tag: C#的

删除是否等于删除?

IP_ADAPTER_INFO *ptr=new IP_ADAPTER_INFO[100]; 如果我自由使用 delete ptr; 会导致内存泄漏,如果不是,那么为什么? 这是由VS2005生成的反汇编代码 ; delete ptr; 0041351D mov eax,dword ptr [ptr] 00413520 mov dword ptr [ebp-0ECh],eax 00413526 mov ecx,dword ptr [ebp-0ECh] 0041352C push ecx 0041352D call operator delete (4111DBh) 00413532 add esp,4 ; delete []ptr; 00413535 mov eax,dword ptr [ptr] 00413538 mov dword ptr [ebp-0E0h],eax 0041353E mov ecx,dword ptr [ebp-0E0h] […]

如何防止scanf在C中导致缓冲区溢出?

我使用这个代码: while ( scanf("%s", buf) == 1 ){ 什么是防止可能的缓冲区溢出的最好方法,以便它可以传递随机长度的string? 我知道我可以通过调用例如限制inputstring: while ( scanf("%20s", buf) == 1 ){ 但我更喜欢能够处理任何用户input。 或者不能这样做安全使用scanf,我应该使用fgets?

什么是主要的正确的声明?

C ++ main函数的正确签名是什么? 什么是正确的返回types,从main返回一个值是什么意思? 什么是允许的参数types,它们的含义是什么? 这是系统特有的吗? 这些规则是否随着时间而改变? 如果我违反了他们会怎么样?

如何清除C中的input缓冲区?

我有以下程序: int main(int argc, char *argv[]) { char ch1, ch2; printf("Input the first character:"); // Line 1 scanf("%c", &ch1); printf("Input the second character:"); // Line 2 ch2 = getchar(); printf("ch1=%c, ASCII code = %d\n", ch1, ch1); printf("ch2=%c, ASCII code = %d\n", ch2, ch2); system("PAUSE"); return 0; } 正如上面代码的作者所解释的那样:程序不能正常工作,因为在第1行,当用户按下Enter键时,它将在input缓冲区中留下2个字符: Enter key (ASCII code 13)和\n (ASCII code […]

在Windows控制台应用程序中输出unicodestring

您好我试图输出unicodestring与控制台与iostreams和失败。 我发现这一点: 在c + +控制台应用程序中使用unicode字体和此代码段的作品。 SetConsoleOutputCP(CP_UTF8); wchar_t s[] = L"èéøÞǽлљΣæča"; int bufferSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL); char* m = new char[bufferSize]; WideCharToMultiByte(CP_UTF8, 0, s, -1, m, bufferSize, NULL, NULL); wprintf(L"%S", m); 但是,我没有find任何方法正确输出与iostreams的Unicode。 有什么build议么? 这不起作用: SetConsoleOutputCP(CP_UTF8); utf8_locale = locale(old_locale,new boost::program_options::detail::utf8_codecvt_facet()); wcout.imbue(utf8_locale); wcout << L"¡Hola!" << endl; 编辑我找不到任何其他的解决scheme,而不是把这个片段包在一个stream中。 希望有人有更好的想法。 //Unicode output for […]

如何从一个通用列表中删除元素,而迭代呢?

我正在寻找一个更好的模式来处理每个需要处理的元素列表,然后根据结果从列表中删除。 你不能在foreach (var element in X)使用.Remove(element) foreach (var element in X) (因为它导致Collection was modified; enumeration operation may not execute. 。exception)…你也不能使用for (int i = 0; i < elements.Count(); i++)和.RemoveAt(i)因为它扰乱了你在集合中相对于i当前位置。 有没有一个优雅的方式来做到这一点?

如何将数组传递到SQL Server存储过程

如何将数组传递到SQL Server存储过程? 例如,我有一个雇员名单。 我想用这个列表作为一个表,并与另一个表join。 但是,员工名单应该作为C#的parameter passing。

在构造函数或声明中初始化类字段?

我最近在C#和Java中编程,我很好奇最好的地方在哪里初始化我的类字段。 我应该在申报时做吗? public class Dice { private int topFace = 1; private Random myRand = new Random(); public void Roll() { // …… } } 或者在构造函数中? public class Dice { private int topFace; private Random myRand; public Dice() { topFace = 1; myRand = new Random(); } public void Roll() { // ….. } } […]

何时在C#中使用静态类

以下是何时使用静态类 MSDN必须说的 : static class CompanyInfo { public static string GetCompanyName() { return "CompanyName"; } public static string GetCompanyAddress() { return "CompanyAddress"; } //… } 对于与特定对象不相关的方法,使用静态类作为组织单位。 此外,静态类可以使您的实现更简单,更快,因为您不必创build一个对象来调用它的方法。 以有意义的方式组织类中的方法是很有用的,例如System命名空间中Math类的方法。 对我来说,这个例子似乎没有涵盖静态类的很多可能的使用场景。 在过去,我使用静态类来实现无状态的相关函数套件,但就是这样。 那么,在什么情况下(而不应该)把一个类声明为静态的呢?

为什么模板类的实现和声明应该在同一个头文件中?

为什么模板类的实现和声明应该在同一个头文件中? 你们中的任何一个人都可以用例子来解释吗