考虑下面的代码:**的glibc ***免费():无效的指针:0x0000000000400b2c
int main()
{
char* s = (char*) malloc(sizeof(char)*10);
s="hello";
free(s);
}
当执行这个节目,我得到一个错误:
** glibc detected *** free(): invalid pointer: 0x0000000000400b2c
我的研究在这错误表示可能是由于未通过malloc()
分配足够的内存空间而导致的。但是该程序已经调用malloc()
,产生了足够的空间用于10 char
s。
这不是现代C++的样子,尽管这是有效的C++。拿起[一本关于C++的好书籍介绍](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)并学习适当的C++。例如,不用'malloc()',你可以在C++中使用'std :: string'类的优越性和易用性。 –
只是指出,问题是C相关,而不是C++ – EddieBytes
@EddieBytes:问题最初只是标记为C++。我不确定我是否赞同将它标记为C的编辑,这引入了另一个与'malloc'结果相关的问题。 – Mat