| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 951 人关注过本帖
标题:数组越界的问题(在vc6下编译没有错误)
只看楼主 加入收藏
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用wimphy在2006-6-15 16:14:44的发言:

斑竹大人

给个例子说明一下怎么能让#pragma pack(push,n)有用阿

#pragma pack对结构的字节对齐是有效的,如
class test
{
char c;
int x;
};
你试试用#pragma pack(push,n),将n改变为1和4的情况下sizeof(test)的大小是会变的

private,你说的

问题在这:
void test()
{ char string[10], str1[10]; //放十个char型的数组.

for(int i=0; i<10;i++) //10个地方都放满了
{
str1[i] ='a';
}
strcpy(string, str1);
cout<<string<<endl; //而这以一个字符串输出,没有\0,自动匹配或直到堆区结束。
问题wfpb在2楼就已经说出来了,而我们讨论的是字节对齐情况,而不是为什么内存错误

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-15 16:42
wimphy
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2005-12-1
收藏
得分:0 
以下是引用aogun在2006-6-15 16:42:37的发言:

#pragma pack对结构的字节对齐是有效的,如
class test
{
char c;
int x;
};
你试试用#pragma pack(push,n),将n改变为1和4的情况下sizeof(test)的大小是会变的

private,你说的

问题在这:
void test()
{ char string[10], str1[10]; //放十个char型的数组.

for(int i=0; i<10;i++) //10个地方都放满了
{
str1[i] ='a';
}
strcpy(string, str1);
cout<<string<<endl; //而这以一个字符串输出,没有\0,自动匹配或直到堆区结束。
问题wfpb在2楼就已经说出来了,而我们讨论的是字节对齐情况,而不是为什么内存错误

哦,明白了,谢谢wfpb和aogun两位~~~~

2006-06-15 16:58
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
#pragma pack对结构的字节对齐是有效的,如
class test
{
char c;
int x;
};
你试试用#pragma pack(push,n),将n改变为1和4的情况下sizeof(test)的大小是会变的

我就说嘛~你的这个题目用#pragma pack(push,n)没意义,这句只是为类型之间调整对齐方式起作用~!

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-15 19:18
快速回复:数组越界的问题(在vc6下编译没有错误)
数据加载中...
 
   



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

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