c - 内存地址如何知道数组的长度?

标签 c memory c-strings

我想我可以标记 C++、汇编和 C,因为内存管理在所有语言中的工作方式都相似。

我刚刚进入 C 语言阶段,正在学习指针。我知道如果你存储一个字符串(或者在 C 中,更广为人知的是 char 数组),它实际上只是该数组第一个元素在内存中的一个地址。

数组的第一个元素如何知道它必须对整个数组计数多少,我自己的猜测是它在第一次出现 \0 时停止,但我是对的吗?我告诉过 \0 是一个标志,表明数组已经完成,你已经击中了最后一个元素(或者从技术上讲,在最后一个元素之后 1)。

我想我发布这个是为了验证我可能是正确的答案。谁能更详细地解释一下?

最佳答案

不是。

使用太大的值作为索引,并且您从数组外部的内存读取/写入。

在 C++ 中执行此操作,优化器可能会缓存数据而不刷新它并获得疯狂的程序状态 (UB)。

现在,通过 = 在结构中复制一个数组?然后在编译时知道大小,同样不使用运行时标记。

关于c - 内存地址如何知道数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50126309/

相关文章:

c - 我的 C Blackjack 程序卡住了

java - 为什么变量声明在 php、perl 等脚本语言中如此简单,而在 Java、C 等语言中却不是这样?

c - 如何获取在 Windows 上运行的 C 中可执行文件的路径?

Python内存模型

c - 如何从编译的elf文件中提取所有函数,即使该函数没有符号

java - Netbeans 模块开发内存不足

c# - 我怎样才能使用更多内存?

c - 重新分配后打印字符串数组时遇到问题?

c++ - 删除字符串时堆损坏

c++ - 为什么将 std::string 传递给 CString.Format() 有时只会崩溃?