cpp*_*der 1 c++ dynamic-memory-allocation
我对动态内存分配概念有一点困惑.如果我们声明一个指针说一个char指针,我们需要分配足够的内存空间.
char* str = (char*)malloc(20*sizeof(char));
str = "This is a string";
Run Code Online (Sandbox Code Playgroud)
但这也有效.
char* str = "This is a string";
Run Code Online (Sandbox Code Playgroud)
那么在这种情况下我们必须分配内存空间?
在第一个示例中,您有内存泄漏
char* str = (char*)malloc(20*sizeof(char));
str = "This is a string"; // memory leak
Run Code Online (Sandbox Code Playgroud)
分配的地址将替换为新地址.新地址是"This is a string"的地址.
你应该改变第二个样本.
const char* str = "This is a string";
Run Code Online (Sandbox Code Playgroud)
因为"这是一个字符串"是写保护区.