当前位置: 首页> 文旅> 艺术 > 家庭装潢设计_在线教育平台搭建_企业文化培训_推广的软件有哪些

家庭装潢设计_在线教育平台搭建_企业文化培训_推广的软件有哪些

时间:2025/7/11 17:44:24来源:https://blog.csdn.net/essencelite/article/details/147017301 浏览次数:0次
家庭装潢设计_在线教育平台搭建_企业文化培训_推广的软件有哪些

背景

写了个小的程序,一直段错误。特此记录

代码

主要代码


int main_mytest(int argc, char *argv)
{char *argv_my = {"echo","/proc/cpuinfo",};main_mytest(sizeof(argv_my)/sizeof(char*), argv_my);
}int main_mytest(int argc, char *argv)
{printf("argc:%d, argv[0]:%s, argv[1]:%s\n", argc, argv[0], argv[1]");...
}

分析

这里只列举了简单的代码,一直段错误。一开始以为了自定了一个argv参数无法正确传递,实际不会。
然后debug的时候只打印1个参数 printf("argc:%d, argv[0]:%s\n", argc, argv[0]"); ,还是报段错误。
然后看是否是argc不对,argc也是1。
但是既然是1,为什么只打印1个参数也段错误呢?
然后怀疑是不是局部变量被释放,可是子函数没执行完,不会出现。但还是实践一下,怀疑自己了。先搞成全局变量,结果还是不对。

	char *argv_my = {"echo","/proc/cpuinfo",};
int main_mytest(int argc, char *argv)
{main_mytest(sizeof(argv_my)/sizeof(char*), argv_my);
}

最后发现,根本原因是:char *argv_my = {定义不对,应该定义一个字符串char *argv_my[] = {
如果定义为char *argv_myname,他指向的理论上是一个 char*的地址,然后地址的值具体是{}结构化初始化的结果。此时如果访问argv_my[1]肯定不对,这部分内存都未被分配。系统访问的时候,虚拟地址访问的时候都找不到这个地址。

综述

不错的一个细节,稍不注意就搞错了。

关键字:家庭装潢设计_在线教育平台搭建_企业文化培训_推广的软件有哪些

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: