文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>为什么char数组要占16的倍数内存

为什么char数组要占16的倍数内存

时间:2011-04-05  来源:jasonlu

字符串溢出,但一般都需要16的倍数,即存在一个x,使得16x>=char数组长度这样的话,比16x还要长的字符会存到其他低地址变量中,如下:

#include<iostream>
#include<string>

int main()
{
    int i = 1;
    char b[25]={0};
    char c[25]={0};
    char a[25]={0};
    std::cout<<(int)&c<<std::endl;
    std::cout<<(int)&b<<std::endl;
    gets(c);
    std::cout<<c<<std::endl;
    std::cout<<b<<std::endl;
    std::cout<<a<<std::endl;
    std::cout<<i<<std::endl;
    std::cout<<(int)&c<<std::endl;
    std::cout<<(int)&b<<std::endl;
    system("pause");
    return 0; 
} 

输出:

2293536
2293568
123456789124567890145678912345678123456789124567891245678123456789
123456789124567890145678912345678123456789124567891245678123456789
8123456789124567891245678123456789

1
2293536
2293568
请按任意键继续. . .

个人结论:内存对齐导致char数组需要16倍数byte的内存

相关阅读 更多 +
排行榜 更多 +
枪战特训2

枪战特训2

飞行射击 下载
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载