社区
C语言
帖子详情
关于c一个简单的问题
volcan1987
2012-06-27 09:58:47
char str1[] = "abcdeft";
const char *str2 = "1111";
strcat(str1, str2);
printf("%s", str1);
这样写合法吗?
我在想,str1是一个数组,那么它初始分配的内存肯定是固定的,但是当调用strcat后,在他末尾又添加了一些东西。
假如在内存分配时,str1后面的内存被分配了,那么我调用了strcat,肯定会把这里内存的内容改写了,那程序肯定会出问题啊?
...全文
124
5
打赏
收藏
关于c一个简单的问题
char str1[] = "abcdeft"; const char *str2 = "1111"; strcat(str1, str2); printf("%s", str1); 这样写合法吗? 我在想,str1是一个数组,那么它初始分配的内存肯定是固定的,但是当调用strcat后,在他末尾又添加了一些东西。 假如在内存分配时,str1后面的内存被分配了,那么我调用了strcat,肯定会把这里内存的内容改写了,那程序肯定会出问题啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
善良超锅锅
2012-06-27
打赏
举报
回复
所以说strcat是不安全的 可以用strcat_s代替
strcat和strcat_s的区别看这里
http://baike.baidu.com/view/4673101.htm
Freeze_Z
2012-06-27
打赏
举报
回复
strcat不进行str1的长度检查.因此需自行保证str1的长度足够.
而你的程序中的写法char str1[] = "abcdeft"; str1正好没有多余长度. str1会被"abcdeft"填满.
导致的问题是会写导致不属于str1的空间被非法覆盖.
善良超锅锅
2012-06-27
打赏
举报
回复
一般你想把str2连接到str1的后面,你必须确保str1数组有足够大的空间。
且str1 和str2的内存区域不能重叠 重叠行为未定义
善良超锅锅
2012-06-27
打赏
举报
回复
这样肯定不合法的 。
char str1[] = "abcdeft",str1数组的大小已经确定了,只能容纳"abcdeft",你再把str2的内容添加到后面是会发生内存访问错误的。
我按照你的代码跑了一遍 编译没问题,运行错误,最后也打印出了abcdeft1111
但是运行时出现内存访问异常
ouyh12345
2012-06-27
打赏
举报
回复
不行,会越界
node-v6.2.0-linux-ppc64le.tar.xz
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
node-v4.7.2-linux-x86.tar.xz
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
2024-2030中国风机盘管组市场现状研究分析与发展前景预测报告.docx
2024-2030中国风机盘管组市场现状研究分析与发展前景预测报告
node-v4.2.1-sunos-x86.tar.xz
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
72-72.渗透测试-MSF图形界面Viper.mp4
72-72.渗透测试-MSF图形界面Viper.mp4
C语言
69,381
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章