为什么指针包含一些垃圾
Why Pointer contains some trash?
我有以下代码片段:
size_t size = 5;
std::vector<char> container(size, 'd');
std::copy(container.begin(), container.begin() + size,
std::ostream_iterator<char>(std::cout, " ")); // d d d d d
auto ptr = containter.data();
//ptr == dddddTRASHTRASH why??
char* str_ = new char[size + 1];
memcpy(str_, container.data, size * sizeof(char));
std::cout << str_ << std::endl; // dddddTRASHTRASHTRASH!!!!
我不明白,为什么我的指针不仅包含d
.如何用RAII
创建带有d
5
符号的指针?
因为container.data()
不是以 null 结尾的,所以指针不指向 C 样式的字符串。您已经在那里放置了 5 个d
,但在这些字节之后只是未分配的内存。当您尝试流式传输它时,它只会继续运行,直到其中一个未分配的字节恰好是