为什么会出现分段错误,我们如何避免这样做呢?

时间:2014-07-25 16:22:42

标签: c

有没有办法将元素释放到数组的末尾?

例如,从第6个到第结束时释放为:


char *str = "Hello, World\n";
char *ptr = str+6;
free(ptr);

给出“分段错误”!

有没有办法实现呢?

1 个答案:

答案 0 :(得分:5)

  

为什么会发生分段错误

因为您正在尝试释放尚未使用malloc分配的内存。如果它已被malloc分配,那么它将无效,因为您没有指向内存的开头。

  

有没有办法实现这一目标?

是否有办法获取尚未使用malloc分配的内存并将其添加到malloc可用的可用内存池中?不,这没有任何意义。特别是因为有问题的内存是只读的。