我读过很多程序员在用 C/C++ 编程时说和写有很多与内存相关的问题。我打算学习用 C/C++ 编程。我有 C/C++ 的初学者知识,我想看一些简短的示例,为什么 C/C++ 会出现内存管理问题。请提供一些 sample 。
最佳答案
在 C 或 C++ 中,有许多方法可以破坏或泄漏内存。这些错误是最难诊断的错误之一,因为它们通常不容易重现。
例如,无法释放您分配的内存很简单。例如,这将执行“双重释放”,尝试释放 a
两次但未能释放 b
:
char *a = malloc(128*sizeof(char));
char *b = malloc(128*sizeof(char));
b = a;
free(a);
free(b); // will not free the pointer to the original allocated memory.
下面是一个缓冲区溢出示例,它破坏了任意内存。这是缓冲区溢出,因为您不知道 str
有多长。如果它超过 256 字节,那么它会将这些字节写入内存中的某处,可能会覆盖您的代码,也可能不会。
void somefunc(char *str) {
char buff[256];
strcpy(buff, str);
}
关于c++ - 为什么 C/C++ 有内存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2979392/