如何解决覆盖不同内存中的缓冲区 Free(): 无效指针错误
我有一个使用 read 的函数。正如我已经知道的那样, read 将文件中给定数量的字符保存在缓冲区中。所以我现在的问题是:
char buff[BUFFER_SIZE + 1]
这是静态内存字符串空间吧?我可以在那里复制一些字符串然后覆盖这个字符串并且不会有任何内存问题吗?在我看来,这与此类似:
int x;
x = 10;
x = 20;
所以 10 被 20 覆盖,10 不再存在。不需要像免费这样的额外操作。
稍后我用同样的方法尝试
char *buff;
buff = malloc(5);
buff = "abcde";
printf("%s",buff);
buff = "efghi";
printf("%s",buff);
好吧...它编译并分别打印 abcde 和 efghi。所以这里发生的事情与我们处理堆栈内存的情况完全相同。但是,据我所知,这段代码应该是这样的:
char *buff;
buff = malloc(5);
buff = "abcde";
free(buff)
buff = malloc(5);
buff = "efghi";
但它给了我一个错误
free(): 无效指针 中止
那么有人知道会发生什么吗?这是一件很小的事情,我已经花了很多时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。