繁体   English   中英

将字符串复制到动态分配的数组时出现段错误?

[英]Seg fault when string copying into a dynamically allocated array?

在我的程序中,我有一个全局结构:

struct card{
   char* action;
   // and other irrelevant members
   };

以及将每张卡初始化为默认值的函数:

void initializeCard(card* cards){
  char* charPtr;
  (*cards).action = new char[9];
  charPtr = (*cards).action;
  *charPtr = 'a'; 
  charPtr++;
  *charPtr = 'c';
  charPtr++;
  *charPtr = 't';
  charPtr++;
  *charPtr = 'i';
  charPtr++;
  *charPtr = 'o';
  charPtr++;
  *charPtr = 'n';
  charPtr++;
  *charPtr = '\0';   

  // so on for other members
  }

总的来说,初始化函数是为未打乱的“卡片”牌组调用的:

card* unshuffled = new card[108];
for(int i=0;i<108;i++, unshuffled++){
   initializeCard(unshuffled);
   }

稍后,我试图用从文件中引入的字符串覆盖阵列中卡的“操作”字符串(该文件有效;我自己编写了该字符串)。 输入的字符串最多为8个字符,因此它将适合已分配的操作数组。

  fin >> temp;
  stringCopy((*cards).action, temp); // <---- this is where I get the seg fault

StringCopy是我自己的版本,是strcpy,它仅逐字符地复制字符,直到并包括null char。 我已经对其进行了测试。

为什么出现段错误?

另外,不要质疑为什么我会像以前那样做事。 我正在为一个类这样做,必须使用动态分配的内存,必须编写自己的字符串库函数,不能使用向量,箭头运算符或重载运算符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM