C的三个很常见但不简单的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 04:35:50
有一下一些编译的问题:1.如果我在windows用VC6.0写了纯C的代码,编译通过了,那么到了unix的kate编译系统可以正常编译吗?2.听说C代码结束时要在最后加一回车,何解?3.当用free释放内存时,怎么检测到它真正的能释放内存了?
三个问题貌似很常见,但不简单,详细加分

关于你说的几个问题:

1、如果你用的标准的C,那么在Kate IDE中,是能够编译通过的。因为Kate,也使用了被认为是最为符合规范的GCC的cc编译器。

2、关于结束时,要加一个回车(\n)。在Windows操作系统的Visual C++中,源代码,是不必加上\n作为结束的。而在某些gcc的版本中(我用的是FreeBSD 5.2.1下面的cc工具,应该是3.4版本的GCC),则在某些不确定的情况下,cc系统,会提示编译错误,认为源代码文件,没有正确结束。只要加上\n,就会一切正常。我想,既然知道了这一点,那么加上\n会比较好,不论代码是在Windows下,或者是Unix下写作的。有两个优势:避免可能发生的Unix下的问题;使得在Unix系统下,进行more或者less操作时,当文件结束,不至于让Shell提示符,显示在代码最后一行文本之后(纯粹是处于美观的考虑……)

3、当free释放内存后,你可以使用::_get_errno()这个函数,确保释放过程的成功。但是,一般来说,很少在代码中见到这样的验证步骤。因为,往往在free()执行之后,很快就会在新分配内存是或者Win32 API执行中,得到错误。

1.如果你的代码完全符合ANSI C标准,并且使用了ANSI C标准编译器,那么移植是没有问题的。

2.C语言没有这种规定。

3.可以指针检查对应内存中的值是否已经改变。

1.那不一定!
2.printf("\n");//表示输出回车;
3.无解!