首页 > 编程知识 正文

二十和廿的使用区别,坩埚和蒸发皿的使用区别

时间:2023-05-03 11:09:08 阅读:258611 作者:3700

这两者很让人头疼,虽然现在用的是C++编程,但是有时候移植一些第三方库,要是用C语言写的,就有可能遇到这个问题。今天去详细了解了一下。


先看看它们的使用介绍(二者用法一样,就是出现的环境不一样):

strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函数成对出现。

原型:

extern char *strdup(char *s);

头文件:string.h

char *strdup(const char *s){ char *t = NULL; if (s && (t = (char*)malloc(strlen(s) + 1))) strcpy(t, s); return t;}

说明:

功 能: 将串拷贝到新建的位置处 strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。 返回值:

返回一个指针,指向为复制字符串分配的空间;如果分配空间失败,则返回NULL值。

二者区别:

strdup是POSIX: _strdup是Windows特定: 在Unix上,使用的strdup。

建议(摘录网上):

在不同的平台上,我们对于strdup内存分配的函数可能采用不同的方法,比如在某些c库中用malloc来分配,而在某些c++库中,用new来分配 (因为c++库可能重写了相关的c库代码)。所以对使用者在释放它的时候产生了很大的疑惑,是用free还是用delete[]来释放所分配的内存呢?! 如果我们主管臆断,用free来释放它,操作未知。可能工作正常,可能是部分内存泄漏,也可能是程序崩溃。自己程序的正确性依赖于编译器,很不爽吧!




版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。