动态内存分配

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)

那么在这种情况下我们必须分配内存空间?

Ale*_*tov 7

在第一个示例中,您有内存泄漏

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)

因为"这是一个字符串"是写保护区.