Tag: C#的

ffmpeg C API文档/ tutorial

我正在试图find使用ffmpeg C API的文档。 看来只有命令行文档可用。 有没有好的文档/教程/链接?

C ++项目组织(使用gtest,cmake和doxygen)

我是一般的编程新手,所以我决定从C ++开始创build一个简单的向量类。 不过,我想从一开始就接受良好的习惯,而不是稍后尝试修改我的工作stream程。 我目前只有两个文件vector3.hpp和vector3.cpp 。 随着我越来越熟悉这个项目,这个项目将慢慢地开始增长(使它更像一个一般的线性代数库),所以我想采用一个“标准”的项目布局,以便以后更容易。 所以在环视后我发现了两种组织hpp和cpp文件的方法,第一种是: project └── src ├── vector3.hpp └── vector3.cpp 第二个是: project ├── inc │ └── project │ └── vector3.hpp └── src └── vector3.cpp 你会推荐哪个,为什么? 其次我想使用谷歌C + +testing框架unit testing我的代码,因为它似乎相当容易使用。 你是否build议把这个与我的代码捆绑在一起,例如在inc/gtest或者contrib/gtest文件夹中? 如果捆绑,你build议使用fuse_gtest_files.py脚本来减less数量或文件,或保持原样? 如果没有捆绑,这个依赖关系是如何处理的? 在编写testing时,这些通常是如何组织的? 我想每个类都有一个cpp文件(例如test_vector3.cpp ),但都编译成一个二进制文件,以便它们都可以轻松地运行在一起。 因为gtest库通常是用cmake和make构build的,所以我认为我的项目也可以这样构build? 如果我决定使用下面的项目布局: ├── CMakeLists.txt ├── contrib │ └── gtest │ ├── gtest-all.cc │ └── gtest.h ├── […]

大对象堆碎片

我正在处理的C#/。NET应用程序正在遭受缓慢的内存泄漏。 我曾经使用CDB与SOS来确定发生了什么,但是这些数据似乎没有任何意义,所以我希望你们中的一个人可能以前经历过这种情况。 该应用程序在64位框架上运行。 它正在不断地计算和串行化数据到远程主机,并且正好击中大对象堆(LOH)。 但是,大多数的LOH对象我都希望是暂时的:一旦计算完成并被发送到远程主机,内存应该被释放。 然而,我所看到的是大量的(活)对象数组与交替的空闲块,例如,从LOH中随机select一个段: 0:000> !DumpHeap 000000005b5b1000 000000006351da10 Address MT Size … 000000005d4f92e0 0000064280c7c970 16147872 000000005e45f880 00000000001661d0 1901752 Free 000000005e62fd38 00000642788d8ba8 1056 <– 000000005e630158 00000000001661d0 5988848 Free 000000005ebe6348 00000642788d8ba8 1056 000000005ebe6768 00000000001661d0 6481336 Free 000000005f214d20 00000642788d8ba8 1056 000000005f215140 00000000001661d0 7346016 Free 000000005f9168a0 00000642788d8ba8 1056 000000005f916cc0 00000000001661d0 7611648 Free 00000000600591c0 00000642788d8ba8 1056 00000000600595e0 00000000001661d0 […]

奇数返回语法语句

我知道这可能听起来很奇怪,但我不知道如何在互联网上search这个语法,也不知道究竟是什么意思。 所以我看了一些更多的LINQ代码,然后我注意到了这个方法 public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer) { if (source == null) throw new ArgumentNullException(nameof(source)); if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); return _(); IEnumerable<TSource> _() { var knownKeys = new HashSet<TKey>(comparer); foreach (var element in source) { if (knownKeys.Add(keySelector(element))) yield return element; } } } 什么是这个奇怪的回报声明? return […]

为什么不能(或不)编译器将一个可预测的加法循环优化成一个乘法?

在读到Mysticial关于如下问题的精彩答案时, 想到了这个问题: 为什么处理sorting后的数组比处理未sorting的数组更快 ? 涉及types的上下文: const unsigned arraySize = 32768; int data[arraySize]; long long sum = 0; 在他的回答中,他解释说,英特尔编译器(ICC)优化了这一点: for (int i = 0; i < 100000; ++i) for (int c = 0; c < arraySize; ++c) if (data[c] >= 128) sum += data[c]; …相当于这样的东西: for (int c = 0; c < arraySize; ++c) if (data[c] […]

这是什么 (( ))?

浏览gcc编译器源代码(gcc / c-family / c-pragma.c)时,我看到: typedef struct GTY(()) align_stack { int alignment; tree id; struct align_stack * prev; } align_stack; 并且不pipe在我身后有多lessC编程年代,这些位(())对我来说都是完全未知的。 有人能解释一下他们的意思吗? 谷歌似乎没有find它。

LINQ ToDictionary和ToLookup有什么区别?

LINQ ToDictionary和ToLookup有什么区别? 他们似乎也是这样做的。

BLAS,LAPACK和ATLAS之间的关系是什么?

我不明白BLAS,LAPACK和ATLAS是如何相关的,我应该如何将它们一起使用! 我一直在浏览所有的手册,我对BLAS和LAPACK有一个总体的概念,以及如何使用它们,但是我找不到任何使用ATLAS的实际例子来看看它是如何相关的这两个。 我想在matrix上做一些低级别的工作,而我的主要语言是C.首先,我想使用GSL,但是如果你想要最好的性能,你应该使用BLAS和ATLAS。 有没有什么好的网页给出一些如何使用这些(在C中)所有在一起的好例子? 换句话说,我正在寻找关于使用这三个(或他们的任何子集!)的教程。 总之我很困惑!

Application.ThreadException和AppDomain.CurrentDomain.UnhandledException之间有什么区别?

好的,这很简单: Application.ThreadException和。之间的区别是什么? AppDomain.CurrentDomain.UnhandledException ? 我需要处理两个吗? 谢谢!

为什么把未使用的返回值作废?

int fn(); void whatever() { (void) fn(); } 是否有任何理由将未使用的回报价值废除,还是我认为这是完全浪费时间? 跟进: 那么这似乎相当全面。 我认为它比评论一个未使用的返回值更好,因为自我logging代码比评论更好。 就个人而言,我会把这些警告closures,因为这是不必要的噪音。 如果一个bug因为它而逃脱,我会吃掉我的话…