c - -1 是一个有效的指针地址吗

标签 c initialization memset

<分区>

Possible Duplicate:
Can a pointer (address) ever be negative?

我正在考虑使用 memset 将结构初始化为所有 -1(因为它使用 没有符号数,零是有效值)。

-1 是一个有效的指针地址吗?我的想法还有其他问题吗? 注意:平台是linux/gcc/x86

附言我正在尝试初始化一个不全是指针的结构,其中零对所有无效值都有效,因此我可以选择在一个函数中进行部分初始化,然后将未初始化的字段初始化为默认值。在 c 语言中是否存在执行此操作的模式/策略?

最佳答案

通常,唯一有效的指针值是 NULL,以及指向现有对象开头、内部和紧跟其后的指针。另请注意,NULL 不一定必须表示为具有零的位模式:s。

在某些架构上,-1 是一个合法的指针值。一些微 Controller 在内存的低位部分有 RAM,在上位部分有只读存储器(如闪存)。

关于c - -1 是一个有效的指针地址吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377077/

相关文章:

c - 为什么栈或堆段中的代码可以被执行?

c - 如何在 Linux 中从 C 执行 shell 脚本?

Swift:为什么类方法有返回类型 AnyObject?

c - OS X 内存集和系统跟踪

c - 实现 memset : dl register segfault

c - snprintf() 在内部调用 memset() 或类似的吗?

c++ - 为什么没有任何标准的 C 和/或 C++ 语言网关接口(interface)作为 Python 的 WSGI?

c++ - 带有模板的奇怪解析行为 _Atomic

c# - 如何自动初始化一个数字递增的列表?

c - 让静态函数变量在C中取参数值