首页IT科技在linux中运行c语言(您知道Linux下C语言编程的一些注意事项吗_教育中国)

在linux中运行c语言(您知道Linux下C语言编程的一些注意事项吗_教育中国)

时间2025-06-18 14:32:07分类IT科技浏览6983
导读:Comments 开年以来读到的第一篇雄文    ...

Comments

开年以来读到的第一篇雄文                ,如饮烈酒                       ,甘冽有劲                。

Posted by:

寒流 | (24)

February 27, 2011 01:28 AM

strdup是posix的, 不是c库.呵呵

Posted by:

cc | (23)

August 6, 2010 10:16 PM

哈哈       ,我们有共同点语言            ,我大胆地猜测                        ,风云大哥一定更喜欢使用写codegen来解决语言的不足           ,而不是去依赖某一语言的特性                       。

Posted by:

artizc | (22)

February 14, 2009 03:00 PM

方法三稍微修改        ,函数内部静态空间每线程一个                        ,与当前线程(ID)捆绑       。实现上以线程ID为key               ,在数组或HashMap中存放缓存    ,实现颇为简单                        ,性能几乎丝毫不损                   ,也可解决文中大部分问题,唯是不可重入            。不过正如云风所说                    ,这个问题可能不是问题                        。

Posted by:

rich | (21)

January 30, 2009 11:04 AM

C 语言标准并没有特别限制返回值不能是什么                       ,所以 C 是允许返回struct 作为一种返回复杂数据的方案的           。

不知道被以前看过的哪本书误导    ,我觉得返回 struct 是 C++ 对 C 的一个扩展        。(其实不是)

感谢指出这个错误的朋友                ,我今天仔细核对了 ISO C90 和 ISO C99 标准                        。:D

Posted by:

Cloud | (20)

January 10, 2009 08:01 PM

您的语言表达能力有待提高啊               。    。                        。

Posted by:

Avin | (19)

January 9, 2009 01:40 PM

"这让我想到了 MySQL 的 C 语言接口                   。很多初学 C++ 的程序员                       ,很喜欢把那些 C 接口“封装               ”成“漂亮                       ”的 C++ 接口。直接返回 vector 套 map 的多层模板实例                    。不知道有多少人干过?前几年我带实习生的时候反正见过不少                       。如果同学你现在醒悟了       ,明白这是件巨傻X 的事情            ,那么握握手                        ,我们有共同理念;否则(C++ 封装以后不是很“酷        ”吗?)           ,我们暂时没有共同语言了    。"

呵呵        ,我也这样干过                。不过                        ,没办法               ,谁叫咱    ,那时候刚学会

c++,不管什么东西                        ,都要用我的c++这把小斧头试试啊                       。

Posted by:

Anonymous | (18)

January 9, 2009 01:14 PM

windows api的调用历来就是这么做的

Posted by:

Anonymous | (17)

January 8, 2009 05:05 PM

为什么说C函数不能返回结构?

Posted by:

Anonymous | (16)

January 8, 2009 03:42 PM

为什么不看看xdr? sun rpc中的数据序列化方式                   ,如果嫌它在线程安全上问题太多,那么看看cdr?C++和java都在用它       。corba的idl和sun rpc的xdr就是两个很好的用DSL定义数据然后交给C语言去解析的例子            。我觉得你所讨论的这些                    ,在它们的实现上全有答案                        。

至于allocator                       ,我只在loki中看见它为小对象设计过    ,专用于小于64bits的小对象的分配           。我觉得这方面是花力未必讨好的事情        。有时间可以做点别的优化                        。哦                ,可以借其做内存泄露的调试器               。

至于数据接收区的大小                       ,我觉得stl的stringstream以及string/vector这些都做的很好       ,根据需求自动增长            ,还可以让程序员可以灵活的预留空间    。但是可惜没有realloc                        。不知道你的应用具体是什么情形                        ,如果每次都是delete/new而没有realloc,对于性能影响大不                   。

Posted by:

snnn | (15)

January 8, 2009 02:49 PM

感觉就是在说fgets嘛

Posted by:

zii | (14)

January 8, 2009 12:09 PM

这篇文章提了一个问题:如何用C语言接收被调用函数返回的数据块?

答案是:调用者分配内存           ,然后传指针给调用函数。被调用者往里面填数据                    。

简单的说就是:去超市买东西得自备购物袋                       。

Posted by:

D.K | (13)

January 8, 2009 10:19 AM

当初我以为指针的数值等于指针指向的地址

后来才发现这两是不等的    。

我到现在还是没搞清楚这两者的关系                。

只是 知道 指针的数值的地址包含有个指针头数据才到指针真正的数据的地址                       。

有没有语法或函数得到一个指针指向数据的长度?

Posted by:

dvaknheo | (12)

January 7, 2009 11:50 PM

感觉写得很混乱        ,看得不是很明白                        ,说的是对2进制数据的描述?

bioware的很多游戏文件都是2进制描述的               ,比如.tlk    ,从博德1开始发展到现在也没淘汰                        ,可以描述一段对话的文本(字符串)                   ,配音文件(字符串),时间轴(浮点)                    ,颜色什么的                       ,实现也简单    ,像元数据                ,先用一个数据结构描述数据结构的结构                       ,然后就是按字节依次填充了

Posted by:

black | (11)

January 7, 2009 08:13 PM

我们公司的模块间数据接口多数是这种类似fread的方案       。不过看RADVISON的代码就喜欢传分配器了            。

GLib就有点用C写C++的感觉                        。

Posted by:

zelor | (10)

January 7, 2009 06:26 PM

传分配器也可以"要求解析器生成的数据结构放在一块连续的内存空间上"啊       ,只不过            ,真的有点怪                        ,明明传了个分配器           ,却又约定只能调用一次-_-!或者传一个类似于realloc的分配器?

Posted by:

天堂的隔壁 | (9)

January 7, 2009 05:25 PM

呵呵        ,最终的解决办法 省心啊                        , 时间真的很宝贵               ,省出的时间可以泡泡妞    ,灌灌水                        , 这才叫生活

Posted by:

lbaby | (8)

January 7, 2009 02:35 PM

pool 是一个内部解决方案                   ,能不暴露出来就不暴露出来           。否则,就需要记住两个东西:1. 结构的地址, 2. pool . 并且要记住两者的关系        。

如果要用的话                    ,最好和别的部分正交化                        。比如                       ,先创建后 pool 传递 buffer 指针进去               。

至于 pool 的伸展能力    ,在这里不是必须的    。文中已有讲述                        。遵循能减则减的原则                ,就可以去掉了                   。

其实在堆上还是在栈上的问题                       ,即使传分配器       ,也是都可以兼顾到的 :) 只要愿意弄点奇技淫巧的话。

传分配器的大问题是            ,复杂的数据结构是多次分配的                        ,而最终需要一次释放                    。这限制了分配器的设计(必须设计成 pool 那种           ,而不能是 C 标准的 malloc )

Posted by:

Cloud | (7)

January 7, 2009 01:43 PM

虽然内存管理器等方案也不算坏        ,但从KISS上说                        ,传内存确实用起来最简单               ,也灵活                       。(注意云风多次强调    ,内存可以在堆里分                        ,也可以在栈上分                   ,似乎要达到这个目地传内存就是唯一的方法了)

Posted by:

天堂的隔壁 | (6)

January 7, 2009 12:45 PM

哈哈,新年好                    ,特别谢谢上个星期云风大哥帮我抽中的豆浆机                       ,豆浆很好喝    ,呵呵    。

平时也一直在用c语言                ,说些我的看法吧:

1                、c是用来做一些底层和性能要求较高的事情                       ,如果不是很注重性能的话       ,没必要用它                。

2                       、c是可以传结构体的                       。c中对于不定的结构体            ,可以用void指针       。

4       、对于像nginx这类代码                        ,可以借鉴一下它里面的pool的概念            。也就是对于不同的生存期的对象定义不同的pool           ,在对象开始时        ,分配一定的内存                        ,在对象存活时               ,可以从这个pool中分配内存    ,不够的话                        ,扩大这个pool                        。在对象消亡时                   ,释放这个对象的pool           。pool底层的实现其实都是malloc来做的        。不过它的特定环境是session这类有特定生存期的对象,与程序的原有设计关系很大                    ,如果是通用的内存分配                       ,像这类东西就没法做到了                        。

Posted by:

yaoweibin | (5)

January 7, 2009 10:43 AM

GLib很多模块都是传构造和析构函数指针进去    ,或者至少传析构指针

Posted by:

Anonymous | (4)

January 7, 2009 09:10 AM

至于说的引入析构函数指针的问题                ,一般情况下                       ,内存都由内存分配器管理       ,不同生命期的对象使用不同的管理器            ,如果只牵涉的内存的话                        ,我觉得要注册析构的情况是很少的

Posted by:

exile | (3)

January 7, 2009 01:40 AM

我觉得传入一个内存管理器的方式挺好的啊           ,比如像nginx这样的内存管理        ,有点类似于Apache的apr_pool                        ,但更适合一般的应用               ,除了性能的提升    ,更重要的是使用起来更简单                        ,最终统一释放                   ,也不容易产生内存泄露               。

Posted by:

exile | (2)

January 7, 2009 01:28 AM

不懂?学习!

Posted by:

xinghang | (1)

January 7, 2009 12:23 AM
声明:本站所有文章,如无特殊说明或标注                    ,均为本站原创发布    。任何个人或组织                       ,在未征得本站同意时    ,禁止复制            、盗用                        、采集           、发布本站内容到任何网站        、书籍等各类媒体平台                        。如若本站内容侵犯了原著者的合法权益                ,可联系我们进行处理                   。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
agcp.exe是什么程序(alg.exe是什么进程?如何识别alg.exe病毒?alg.exe为什么运行?) vscode查询代码在哪个文件(yarn3+vscode使用指南)