Почему следующая простая программа на C++ с общим_ptr выдает ошибку?
Это потому, что блок не следует инициализировать с помощью std::make_shared(BLOCKSIZE)?
Если я использую unique_ptr, проблем нет.
#include
#include
#define BLOCKSIZE 100000
struct MyClass {
std::shared_ptr block;
MyClass() : block(std::make_shared(BLOCKSIZE)) {}
void fill_block() {
for (size_t i = 0; i < BLOCKSIZE; ++i) {
block = static_cast(i % 99);
}
}
void print_one(size_t i) {
if (i < BLOCKSIZE) {
std::cout
Почему следующая простая программа на C++ с общим_ptr выдает ошибку? Это потому, что блок не следует инициализировать с помощью std::make_shared(BLOCKSIZE)? Если я использую unique_ptr, проблем нет. #include #include
#define BLOCKSIZE 100000
struct MyClass { std::shared_ptr block;
MyClass() : block(std::make_shared(BLOCKSIZE)) {}
void fill_block() { for (size_t i = 0; i < BLOCKSIZE; ++i) { block[i] = static_cast(i % 99); } }
void print_one(size_t i) { if (i < BLOCKSIZE) { std::cout
Вот код
Это функция, которая вставляет узел после указанного местоположения. Здесь у нас есть узел temp и ptr. Узел Temp будет хранить узел, после которого необходимо вставить новый узел, а узел ptr хранит данные нового узла.
здесь после...
Вот код
Это функция, которая вставляет узел после указанного местоположения. Здесь у нас есть узел temp и ptr. Узел Temp будет хранить узел, после которого необходимо вставить новый узел, а узел ptr хранит данные нового узла.
здесь после...
Почему следующая простая программа на C++ с общим_ptr выдает ошибку?
Это потому, что блок не следует инициализировать с помощью std::make_shared(BLOCKSIZE)?
Если я использую unique_ptr, проблем нет.
#include
#include
Начиная с(?) MSVS2022 17.10.3 моя блокировка области действия начала выдавать исключение, так как она разыменовывает нулевой ptr(?!):
Exception thrown at 0x00007FF9FAFF3020 (msvcp140.dll) in foo.exe: 0xC0000005: Access violation reading location...