无法访问地址 X 处的内存

标签 c memory

代码如下:

  char * pointer, ** ptr2;
  char ptr[5][100];

  strcpy(ptr[0],"fasfasf fasfas");
  strcpy(ptr[1],"sfasfa");

  ptr2=ptr;

当尝试读取 ptr2 内部的内容时,它告诉我它无法访问该内存,但我可以通过 ptr 访问它。关于它为什么失败的任何想法?谢谢

最佳答案

正如一些程序员所说,数组的数组与指向指针的指针不同。

问自己这个问题,ptr[0] 给了你什么?答案:100 个字符的数组。

因此,ptr 的作用就像一个指向 100 个 char 数组的指针,而不是像您尝试的那样,是一个指向 的指针字符

如果我们想声明一个像您的 ptr 一样的指针,我们可以这样声明:

char (*ptr2)[100]

完成之后你就可以做

ptr2 = ptr;

就像您尝试没有任何问题一样。

关于无法访问地址 X 处的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40363379/

相关文章:

c++ - 为什么 select() 总是超时? ( window )

c - 实际示例使用 dup 或 dup2

c - 覆盖 C 库函数,调用原始函数

c - 矩阵上奇怪的段错误(核心转储)

python - 如何在 Python 中分析内存使用情况?

java - 如何找到导致内存泄漏的类?

c - 如何在 C 中使用 fscanf() 来识别被识别为字符串的模式?

c - 指向数组的指针

ios - Crashreport 指示对象和参数之间的 KVO 连接从未在代码中启动

Java:新生代使用 100%,Eden 空间使用 100%,From 空间使用 100%