【发布时间】:2010-05-16 00:19:44
【问题描述】:
我一直在为我的学术课程使用 C/C++ 编程,并且我的印象是我对它掌握得很好。但最近我不得不在一个蓝牙应用程序中工作,该应用程序在 Linux 机器和嵌入式系统中具有服务器和客户端实现。我学习了 bluez 蓝牙 API、套接字/网络编程并对其进行了编码。
然而,在此过程中,我遇到了很多内存泄漏和分段错误以及其他与内存相关的错误。随着代码变得越来越复杂,我几乎失去了对指针、线程和套接字的控制。这让我想知道我有很多东西要学,而他们在基本的 C/C++ 书籍中没有说。所以我想询问可用的资源,这些资源将有助于以专业的方式在 C/C++ 中更好地编写代码。尤其是对于 Linux/Mac 环境(gcc 编译器)。
编辑:将 C 更改为 C++,因为它造成了混乱。
【问题讨论】:
-
学习 C 或 C++ 编程的“正确方法”的第一步是停止将这对语言视为单一语言,并意识到两者是完全不同的,尤其是在编写好的代码方面。
-
@james 是的,你向我指出这一点是正确的。我主要是指处理内存和线程。 C 在那里,因为我认为 C++ 中的大部分功能都是从 C 派生的,因为在我的业余思维方式中,C 是 C++ 的一个子集。很多时候我发现 C++ 项目也有一些纯 C 代码。但要说清楚,我想学得更好的是 C++。
-
我认为学习 C++ 的正确方法是为了好玩而编码几年。没有什么比经验更重要的了,当你在复杂的事情上工作并享受它时,你会学得最好。我会说,如果“你失去了对指针的控制”,那么你就很绿了。你需要更多的练习,而不是书本。尝试从头开始编写游戏引擎,或类似的东西。
-
@David 好吧,这是您的意见,所以您有权获得它,我无话可说...我是一个刚刚开始冒险进入狂野编码世界的人...我意识到我需要学习比我的学术课程中的基础书籍更多的东西......所以我想知道其他已经走在这条路上的人的意见......这是错误的吗?......和是的,你怎么可能挖你的鼻子在公共场合挖它被认为是不好的做法。这就是我希望在这里得到一些想法的事情。
-
你的书面英语表明你没有对你写的东西给予足够的关注和思考。这可能不是真的,但很容易想象你以同样的方式编写 C++,这会导致你的问题。 catb.org/~esr/faqs/hacker-howto.html#skills4