一个多维数组的有关问题.
一个多维数组的问题..
第一次发帖,如果格式不正确,请版主提醒。谢谢
编译方式 gcc -o a test3.c
系统 2.6.32-131.0.15.el6.x86_64(RHEL6.5 x64)
gcc是gcc version 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC)
代码如下
#include <stdio.h>
void func(int (*a)[10]);
int main()
{
int n[1][1];
func(n);
return 1;
}
void func(int (*a)[10])
{
(*a)[9]=100;
}
为什么(*a)[9]=100;能操作成功?这不是越界了吗??
------解决思路----------------------
其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
第一次发帖,如果格式不正确,请版主提醒。谢谢
编译方式 gcc -o a test3.c
系统 2.6.32-131.0.15.el6.x86_64(RHEL6.5 x64)
gcc是gcc version 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC)
代码如下
#include <stdio.h>
void func(int (*a)[10]);
int main()
{
int n[1][1];
func(n);
return 1;
}
void func(int (*a)[10])
{
(*a)[9]=100;
}
为什么(*a)[9]=100;能操作成功?这不是越界了吗??
------解决思路----------------------
其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。