cpp中字符串的动态内存分配

dynamic memory allocation of strings in cpp

本文关键字:内存 分配 动态 字符串 cpp      更新时间:2023-10-16

所以这是我已经在代码上工作了5个小时的事情,逻辑看起来很好,程序似乎完成了它的工作,唯一一直困扰我的是字符串的动态内存分配。该问题没有指定用户必须输入的初始字符串数。以下是我一直在尝试动态获取字符串的方法:

      int t;
      cin>>t  //number of strings user wishes enter 
      char *s1[1000009];  //1000009 is the maximum number of digits each string can have
      for(i=0;i<t;i++)
      {
                s1[i]=(char *)malloc(1000009) 
                cin>>s1[i];
      }

不确定这是否是正确的方式。如果不是动态字符串,我可以存储2D字符数组的方法也可以。

谢谢你,gaurav

使用字符串向量,而不是使用malloc/new。

int t;
std::cin >> t;
std::vector<std::string> strings(t); //Create t strings
for(int i = 0; i < t; i++)
    std::cin >> strings[i]; //Read into each string

既然你把这个问题标记为C++,我会这样做:

std::vector<std::string> s1(1000009);

仅此而已-不需要使用malloc,也不需要关心破坏。如果您正在使用C++,请使用现有的工具。

我会这样做:

int i = 0;
char **s1;
s1 = (char **)malloc(t * sizeof(char *));
while (i < t)
{
 s1[i] = (char *)malloc(1000009 * sizeof(char));
 i++;
}

第一个malloc创建您的t行。第二个填充为每行分配100000009个字符