动态字符串数组,但是我检测到堆损坏

我尝试创建一个char指针的动态数组,这也意味着指针也可以是动态内存,因此在上面的代码中,我尝试为该数组分配一个大小,然后在他的第一个对象中分配一个字符串。但是我在数组指针上收到“检测到堆损坏”错误。

List<Integer> a = new ArrayList<Integer>();
a.add(1);
a.add(2);
a.add(3);

String spaceSeparatedNumbers = a.stream()
         .map(i -> i.toString())
         .collect(Collectors.joining(" "));

System.out.println(spaceSeparatedNumbers); //<-- it will print 1,2,3

我复制了整个主体,所以你知道我没想到。

zhangchuanlele 回答:动态字符串数组,但是我检测到堆损坏

您在这里没有分配足够的空间:

pArr = (char**)malloc(sizeof(char) * 1); 

您只能为1 char分配空间,而不是1 char *。因此,您最终写完了调用undefined behavior的已分配内存。

分配正确的空间量:

pArr = malloc(sizeof(char *) * 1); 

或更妙的是:

pArr = malloc(sizeof(*ptr) * 1); 
本文链接:https://www.f2er.com/2320156.html

大家都在问