Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中指针内存的范围是多少_C_Pointers - Fatal编程技术网

C中指针内存的范围是多少

C中指针内存的范围是多少,c,pointers,C,Pointers,指针中可以分配多少值/空间。有没有办法找到可能的分配总数。据我所知,C语言中只保留NULL值(“零”,但不一定所有零位),因此指针类型的其余数字空间值就C语言而言都是有效的指针地址,但是在一个特定的平台上,会应用许多额外的规则来减少可用的内存空间(例如,内存映射IO) (请注意,我假设您谈论的是一个平坦的内存空间,就像我们使用真正的32位编程一样,而不像16位编程时使用near和far指针和各种内存攻击) 在我的“特定平台”注释上展开,在32位Windows(0x000000到0x7FFFFFF

指针中可以分配多少值/空间。有没有办法找到可能的分配总数。

据我所知,C语言中只保留
NULL
值(“零”,但不一定所有零位),因此指针类型的其余数字空间值就C语言而言都是有效的指针地址,但是在一个特定的平台上,会应用许多额外的规则来减少可用的内存空间(例如,内存映射IO)

(请注意,我假设您谈论的是一个平坦的内存空间,就像我们使用真正的32位编程一样,而不像16位编程时使用
near
far
指针和各种内存攻击)

在我的“特定平台”注释上展开,在32位Windows(
0x000000
0x7FFFFFFF
)上,而不是4GiB上,因为Windows中32位指针的高位是保留的(除非指定
图像文件\大地址\感知
标志)


至于分配的总数:(例如,一个单字节缓冲区可以分配多少次),这取决于分配器和父操作系统的实现,因为每次分配都有空间开销(有许多不同的方法实现一个alocator,具有不同的结构和算法)所以我不能作一个一般性的陈述。

据我所知,C语言中只保留
NULL
值(“零”,但不一定所有零位),因此指针类型的其余数字空间值就C语言而言都是有效的指针地址,但是在一个特定的平台上,会应用许多额外的规则来减少可用的内存空间(例如,内存映射IO)

(请注意,我假设您谈论的是一个平坦的内存空间,就像我们使用真正的32位编程一样,而不像16位编程时使用
near
far
指针和各种内存攻击)

在我的“特定平台”注释上展开,在32位Windows(
0x000000
0x7FFFFFFF
)上,而不是4GiB上,因为Windows中32位指针的高位是保留的(除非指定
图像文件\大地址\感知
标志)


至于分配的总数:(例如,一个单字节缓冲区可以分配多少次),这取决于分配器和父操作系统的实现,因为每次分配都有空间开销(有许多不同的方法实现一个alocator,具有不同的结构和算法)因此,我不能作一般性的陈述。

原则上,对象表示中的两个
char
指针之间的差异必须可以用
ptrdiff\u t
表示,因此这给了您一个上限。但在现代系统中,这可能不是一个现实的界限。你是在问一个变量能容纳多少内存吗?或者通常有多少内存可用?是,因为它取决于配置。有什么方法可以计算吗。@KerrekSB在不在同一数组中的两个对象之间产生一个
ptrdiff\u t
,这是一个未定义行为的例子。从C语言的角度来看,这是未指定的。原则上,例如,一个对象的对象表示中的两个
char
指针必须可由
ptrdiff\u t
表示,这样就有了一个上限。但在现代系统中,这可能不是一个现实的界限。你是在问一个变量能容纳多少内存吗?或者通常有多少内存可用?是,因为它取决于配置。有什么方法可以计算吗。@KerrekSB在不在同一数组中的两个对象之间产生一个
ptrdiff\u t
,这是一个未定义行为的例子。从C语言的角度来看,这是未指定的。需要注意的其他细节是任何非字符类型(甚至某些字符类型)的填充和对齐要求。其他需要注意的细节是任何非字符类型(甚至某些字符类型)的填充和对齐要求。