| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2833 人关注过本帖
标题:为何运行后,提示variable was corrupted?
只看楼主 加入收藏
cuizhihui
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-27
收藏
 问题点数:0 回复次数:4 
为何运行后,提示variable was corrupted?
在VS2005中运行如下程序,运行结果正确,但弹出提示“Run-Time Check Failure #2 - Stack around the variable 'p1' was corrupted.”,不知道为什么。

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"void main()
{
    char p1[20],p2[20];
    printf("string 1:");
    gets(p1);
    printf("\nstring2:");
    gets(p2);
    strcat(p1,p2);
    printf("new string:%s",p1);
    getch();
}
输入的是“Hello world”和“I love you”

在TC中运行正常,没有错误提示。
请帮忙解答一下原因,谢谢!
搜索更多相关主题的帖子: variable 运行 提示 corrupted 
2010-01-20 18:00
cuizhihui
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-27
收藏
得分:0 
找到一个解决办法,将p1改为20以上,如p1[30],就没有问题了。

“Hello world”+“I love you”后刚好20个字节,是否在VC中运行时默认多加了个什么字符,导致p1空间不足?

刚学C不久,请高手帮忙解答,谢谢!
2010-01-21 10:27
梁子
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:83
专家分:191
注 册:2009-9-20
收藏
得分:0 
“Hello world”+“I love you”21个字符吧?。。。
2010-01-21 10:49
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 
"Hello world"+"I love you"明明21个字符
就算是20个后面还要有一个'\0'呢,p1[20]照样不够用

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2010-01-21 11:23
cuizhihui
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-27
收藏
得分:0 
输入的是"Hello world" 和 "I love you".

那为什么在TC中运行,没有问题呢?  

如果在VC中运行,后面会加一个'\0',在TC中没有出问题,就是没有加吗?
2010-01-21 12:19
快速回复:为何运行后,提示variable was corrupted?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020418 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved