Во-первых, конечно, он будет существовать снаружи, вот и все, что такое динамическое распределение. Кроме того, сама переменная является глобальной. Кроме того, это должно быть char const** array;
, а распределение должно быть new char const*[3]
(обратите внимание на квадратные скобки). const
, потому что здесь вы не измените содержимое строк.
Во-вторых, не делайте этого . Просто поместите это в класс и используйте std::vector
!
#include <vector>
class Foo{
public:
function_1(){
_array.push_back("value 1");
_array.push_back("value 2");
_array.push_back("value 3");
}
function_2(){
_array[0] = ("new value 1");
}
private:
std::vector<std::string> _array;
};
int main(){
Foo f;
f.function_1();
f.function_2();
}
Еще лучше иметь std::vector<std::string>
, чтобы вы могли безопасно изменять содержимое, не беспокоясь об управлении памятью. Впрочем, до этого уже не будет ни одного блока. Теперь я должен спросить, как именно вы хотите передать буфер в сокет?