Tag: C#的

是否返回一个C ++参考variables的做法,邪恶?

我觉得这有点主观。 我不确定意见是否会一致(我已经看到很多代码片断,其中引用被返回)。 根据对这个问题的评论, 我刚刚问到,关于初始化引用 ,返回一个引用可能是邪恶的,因为[据我所知],更容易错过删除它,这可能导致内存泄漏。 这让我感到担忧,因为我遵循例子(除非我想象的东西),并在less数几个地方这样做…我误解了吗? 它是邪恶的吗? 如果是这样,那么多么邪恶? 我觉得,因为我的指针和引用混杂,加上我是新来的C ++的事实,并彻底混淆什么时候使用,我的应用程序必须是内存泄漏地狱… 另外,我明白,使用智能/共享指针通常被认为是避免内存泄漏的最好方法。

如何在.so文件中列出符号

如何列出从.so文件导出的符号。 如果可能的话,我也想知道他们的来源(例如,如果他们从一个静态库拉入)。 我使用gcc 4.0.2,如果这有所作为

为什么当我写入超出数组的末尾时,不会出现分段错误?

为什么我编译时不会出错? #include <iostream> using namespace std; int main() { int *a = new int[2]; // int a[2]; // even this is not giving error a[0] = 0; a[1] = 1; a[2] = 2; a[3] = 3; a[100] = 4; int b; return 0; } 有人可以解释为什么发生这种情况。 提前致谢。)

如果我input一个字母而不是一个数字,为​​什么我会得到一个无限循环?

我正在编写一个家庭作业的代码(刚刚启动C ++,所以请轻松)。 我们刚刚开始,今天做,做和循环。 该程序运行正常,但如果您input一个字母,当程序要求一个整数,它无限循环。 到底是怎么回事? (下面的代码)***编辑:澄清,循环的部分是:“您input的数字是负数,请input一个正数继续。 但用户没有机会input另一个号码。 它只是不断打印这个。 #include <iostream> using namespace std; int main ( ) { //define variables int num1, num2, total; char answer1; do { //user enters a number cout << "\nPlease enter a positive number and press Enter: \n"; cin >> num1; //check that the given num1 value is positive while […]

C#分割string?

只是想知道,例如,如果我有string: Hello#World#Test 我将如何删除#,然后有三个单独的string中的Hello , World和Test ,例如: String1和String1和String3

内存泄漏使用StreamReader和XmlSerializer

我一直在谷歌search过去的几个小时,尝试不同的东西,但似乎无法在这个底部…. 当我运行这个代码时,内存使用量不断增长。 while (true) { try { foreach (string sym in stringlist) { StreamReader r = new StreamReader(@"C:\Program Files\" + sym + ".xml"); XmlSerializer xml = new XmlSerializer(typeof(XMLObj), new XmlRootAttribute("rootNode")); XMLObj obj = (XMLObj)xml.Deserialize(r); obj.Dispose(); r.Dispose(); r.Close(); } } catch(Exception ex) { Console.WriteLine(ex.ToString()); } Thread.Sleep(1000); Console.Clear(); } XMLObj是一个自定义对象 [Serializable()] public class XMLObj: IDisposable { [XmlElement("block")] […]

在给toupper打电话之前,我需要转换成unsigned char吗?

前段时间,在StackOverflow上有很高声望的人在评论中写道,在调用std::toupper (和类似的函数)之前,必须将char转换为unsigned char 。 另一方面,Bjarne Stroustrup没有提到在C ++编程语言中这样做的必要性。 他只是使用toupper string name = "Niels Stroustrup"; void m3() { string s = name.substr(6,10); // s = "Stroustr up" name.replace(0,5,"nicholas"); // name becomes "nicholas Stroustrup" name[0] = toupper(name[0]); // name becomes "Nicholas Stroustrup" } (从第四版的书中引用) 引用说input需要表示为unsigned char 。 对我来说这听起来像它适用于每个char因为char和unsigned char具有相同的大小。 那么这样的表演是不必要的还是Stroustrup不小心呢? 编辑: libstdc ++手册提到input字符必须来自基本的源字符集 ,但不会投。 我猜这是由@Keith Thompson的答复所覆盖,他们都有一个积极的代表作为signed char和unsigned char […]

我应该使用公共财产和私人领域或公共领域的数据?

在我看到的大部分代码中(在SO上,codeproject.com和我倾向于在我自己的代码中这样做),我已经看到公共属性是为类中包含的每个专用字段创build的,即使它们是最get; set;基本typesget; set; get; set; 喜欢: private int myInt; public int MyInt { get { return myInt; } set { myInt = value } } 我的问题是:这与以下不同: public int MyInt; 如果我们应该使用属性,而不是公共领域,为什么我们应该在这个特定的情况下使用它们? (我不是在讨论更复杂的例子,在这些例子中,getter和setter实际上做了一些特殊的事情,或者只有一个get或set(只读/写)而不是返回/设置一个私有字段的值。 它似乎没有添加任何额外的封装,只有在智能感知中提供一个很好的图标,并放置在类图的特殊部分!

GCC和预编译头

在阅读了这篇精美的文章 (“编译头文件的关心和喂养”)之后,我对这些文章在现实生活中如何工作有些怀疑。 更具体地说,我怎么能知道我需要在以下情况下触发重新编译的头文件: 我决定在我的一个.cpp文件中定义一些东西,它改变了预处理器解释已经包含在我的预编译头文件中的一些头文件 我在其中一个.cpp文件中包含另一个头文件,它定义了一个特定的预处理器指令,用于改变预处理器解释已包含在预编译头文件中的头文件的方式 更糟糕的是,以前的问题可以recursion地发生,当某些头文件#include其他头文件 预编译的头文件的使用是否强制执行某种限制性的编码风格,如将.cpp文件中包含的头文件的数量限制为1,而不是在.cpp文件中定义文件? 虽然微软的编译器可能在预编译的头文件(通过应用一些特定于MS的巫术工具)上做了一个体面的工作,因为据我所知,它提供了应该做所有pipe道的/Yc和/Yu选项,对于GCC看起来这个function在Makefile中需要大量的手工工作和创造性,而且我无法find一个模板来解决所有使用预编译头文件的缺陷。 例如,如果我有一个build立几个库的项目,为了在每次更改之后不重build所有的库,我必须在Makefile中使用一些非常可爱的sed技巧来检测是否有一个标头#include d库被修改了(或者#include一个修改的头文件)。 我害怕甚至想到预构build头文件实际上意味着为了使构build脚本在每次必要时重build它们的复杂性。

对静态成员有一个未定义的引用是什么意思?

我刚刚写了一些静态数据成员的类,但现在我得到关于“未定义的引用”的错误。 为什么这不工作? 我究竟做错了什么? (注意:这是一个Stack Overflow的C ++常见问题解答的入口,如果你想批评在这个表单中提供FAQ的想法,那么在这个开始所有这些的meta上的贴子将是这个地方的答案。那个问题在C ++聊天室中进行监控,常见问题解决scheme首先出现,所以你的答案很可能会被那些提出这个想法的人阅读)。