malloc(0)返回什么? 答案是一样的realloc(malloc(0),0) ? #include<stdio.h> #include<malloc.h> int main() { printf("%p\n", malloc(0)); printf("%p\n", realloc(malloc(0), 0)); return 0; } 从linux gcc输出: manav@manav-workstation:~$ gcc -Wall mal.c manav@manav-workstation:~$ ./a.out 0x9363008 (nil) manav@manav-workstation:~$ 输出保持每次malloc(0) 。 这是一个标准答案吗? 除了学术研究之外,为什么有人有兴趣得到这样一个指针呢? 编辑: 如果malloc(0)返回虚拟指针,那么如何工作: int main() { void *ptr = malloc(0); printf("%p\n", realloc(ptr, 1024)); return 0; } 编辑: 以下代码为每个迭代输出“可能”。 为什么它不会失败? #include<stdio.h> #include<malloc.h> int main() { int […]
这个声明会产生什么? void * p = (void*) malloc(sizeof(void)); 编辑:这个问题的扩展。 如果sizeof(void)在GCC编译器中产生1,那么分配1字节的内存,指针p指向那个字节,p ++会递增到0x2346? 假设p是0x2345。 我在说p而不是* p。
为了testing的目的,我想知道一个程序/函数/命令需要多less时间才能完成。 这是我做的,但我的方法是错误的,因为如果秒的差异是0不能返回经过的毫秒: 请注意,睡眠值是500毫秒,因此经过的秒数为0,则无法返回毫秒。 Dim Execution_Start As System.DateTime = System.DateTime.Now Threading.Thread.Sleep(500) Dim Execution_End As System.DateTime = System.DateTime.Now MsgBox(String.Format("H:{0} M:{1} S:{2} MS:{3}", _ DateDiff(DateInterval.Hour, Execution_Start, Execution_End), _ DateDiff(DateInterval.Minute, Execution_Start, Execution_End), _ DateDiff(DateInterval.Second, Execution_Start, Execution_End), _ DateDiff(DateInterval.Second, Execution_Start, Execution_End) * 60)) 有人可以告诉我一个更好的方法来做到这一点? 也许用TimeSpan ? 解决scheme: Dim Execution_Start As New Stopwatch Execution_Start.Start() Threading.Thread.Sleep(500) MessageBox.Show("H:" & Execution_Start.Elapsed.Hours & vbNewLine & […]
这是我见过的唯一的地方, or在C ++中not被列为实际操作符。 当我在NetBeans中写了一个testing程序的时候,我得到了红色的下划线,就好像有一个语法错误,并认为这个网站是错误的,但是它是错误的,因为它是按照预期编译和运行的。 我可以看到! 被赞成而not但是可读性and & or似乎比他们的语法兄弟更大。 为什么这些版本的逻辑运算符存在,为什么似乎没有人使用它? 这是真正有效的C ++还是与C语言包含的某种兼容性?
在一个非静态的方法,我可以使用this.GetType() ,它会返回Type 。 我怎样才能获得相同的Type在一个静态的方法? 当然,我不能只写typeof(ThisTypeName)因为ThisTypeName只在运行时才是已知的。 谢谢!
我有一个需要快速性能的程序。 在其内部的一个循环中,我需要testing一个对象的types,看它是否从某个接口inheritance。 一种方法是使用CLR的内置types检查function。 最优雅的方法可能是“is”关键字: if (obj is ISpecialType) 另一种方法是给基类自己的虚拟GetType()函数返回一个预先定义的枚举值(在我的情况下,实际上,我只需要一个布尔)。 这种方法会很快,但不太优雅。 我听说有一个专门针对“is”关键字的IL指令,但这并不意味着在翻译成本地程序集时执行得更快。 任何人都可以分享一些洞察'是'与另一种方法的performance吗? 更新:感谢所有的知情答案! 似乎有一些有用的观点分布在答案中:Andrew关于'是'自动执行演员的观点是必不可less的,但Binary Worrier和Ian收集的演出数据也非常有用。 如果其中一个答案被编辑,包括所有这些信息,那将是非常好的。
我在日常生活中写了相当多的linq,但大多是简单的陈述。 我注意到,在使用where子句的时候,有很多方法可以写出来,每个都有相同的结果,据我所知。 例如; from x in Collection where x.Age == 10 where x.Name == "Fido" where x.Fat == true select x; 至less就结果而言似乎相当于此: from x in Collection where x.Age == 10 && x.Name == "Fido" && x.Fat == true select x; 那么除了语法,还有其他的区别吗? 如果是这样,什么是首选的风格,为什么?
当我使用getline ,我会input一串string或者数字,但是如果它不是一个数字,我只希望while循环输出“word”。 那么有什么办法来检查“单词”是否是一个数字? 我知道我可以使用atoi()的Cstring,但如何处理string类的string? int main () { stringstream ss (stringstream::in | stringstream::out); string word; string str; getline(cin,str); ss<<str; while(ss>>word) { //if( ) cout<<word<<endl; } }
我需要在C-sharp中与c ++的std::multimap<K, V, Comp, Alloc>等价。 它是否存在于标准库中?
我想将一个匿名对象作为parameter passing给一个方法,然后遍历它的属性来将每个属性/值添加到一个dynamic的ExpandoObject 。 所以我需要的是离开 new { Prop1 = "first value", Prop2 = SomeObjectInstance, Prop3 = 1234 } 知道每个属性的名称和值,并能够将它们添加到ExpandoObject 。 我如何做到这一点? 附注:这将在我的许多unit testing中完成(我正在使用它来重构设置中的很多垃圾),所以性能在一定程度上是相关的。 我对reflection的确切知之甚less,但是从我所了解的情况来看,它的performance很重,所以如果可能的话,我宁愿避免它。 后续问题:正如我所说的,我将这个匿名对象作为方法的参数。 我应该在方法的签名中使用哪种数据types? 如果我使用object所有的属性都可用吗?