Когда вы выделяете память с помощью malloc или new, вы получаете взамен только указатель, поэтому вам нужно подходить к этому по-другому - с такими функциями, как strcpy, strcmp (если вам нужно проверить равенство текстов, вы также не можете сравнивать только указатели ). Узнайте больше об указателях в любой книге по C++. Можно создавать тексты без явного выделения памяти, например, это законно:
const char *text = "my text";
Но дальнейшие модификации, как вы показали, не являются (обратите внимание на const, это дает нам больше безопасности). В этом случае текст создается где-то в памяти самим компилятором (сейчас я упрощаю), и назначается только указатель. В этом случае вы не можете изменить этот текст (по крайней мере, небезопасно).
Следующее, когда вы выделяете какую-либо память, вы должны освободить ее вручную, по крайней мере, в таких языках, как C/C++, где управления памятью (сборщики мусора и т. д.) на самом деле не существует. Если вы пропустите этот шаг, вы столкнетесь с проблемами (например, с нехваткой памяти) быстрее, чем вы думаете.
person
gecio
schedule
18.07.2014