c-指针指向strcpy上的char数组seg错误,但使用等号



我想知道为什么char数组的指针会受到等号值的影响,因为它通常必须被字符串复制?为什么我可以将anArray[0].ptr[0]的内容打印为%s字符串?

有没有一种方法可以将整个字符串复制到anArray[0]中的结构中,并在释放hello时保留它?

#include <stdlib.h>
#include <stdio.h>
struct arrayOf {
  int line;
  int col;
  char ** ptr;
}
int main(void){
 char * hello = "Hello";
 struct arrayOf anArray[5];
 anArray[0].ptr = malloc(sizeof(char*));
 anArray[0].ptr[0] = malloc(100*sizeof(char));
 anArray[0].ptr[0] = hello; //work
 strcpy(anArray[0].ptr[0], hello); //seg fault
return EXIT_SUCCESS;
}

您正在用赋值覆盖anArray[0].ptr[0](导致内存泄漏),因此anArray[0].ptr[0]不再指向分配的内存。

strcpy(anArray[0].ptr[0], hello); //copied hello to anArray[0].ptr[0]
anArray[0].ptr[0] = hello; //cause a memory leak and anArray[0].ptr[0] points to unwritable memory(probably)

相关内容

  • 没有找到相关文章

最新更新