Ключевое слово удаления C++ вызывает «Неизвестный сигнал» ⇐ C++
-
Anonymous
Ключевое слово удаления C++ вызывает «Неизвестный сигнал»
Я только начал изучать C++ и, чтобы лучше понять, как работает память, я попытался построить массив с динамическим размером на C++. Мне успешно удалось реализовать функции push и get, но когда я попытался добавить функциональность pop, я наткнулся на очень странную ошибку, о которой я не нашел ни одной похожей записи в Интернете, которая произошла при использовании ключевое слово delete, чтобы освободить память.
Вот мой код:
#include #include использование пространства имен std; шаблон класс Массив { Т*птр; публика: внутренний размер; Массив(беззнаковый int original_size): size(original_size) { ptr = (T*) malloc(размер * sizeof(T)); } Множество () { размер = 0; ПТР = 0; } void set(int pos, T val) { ptr[pos] = значение; } T get(int pos) { вернуть ptr[pos]; } T оператор[] (int i) { вернуть получение (я); } void оператор() (int pos, T val) { установить (поз., вал); } void add(значение T) { ptr = (T*) realloc(ptr, (++size) * sizeof(T)); set(размер - 1, значение); } Т поп() { Т темп = получить (--размер); удалить (ptr + размер); температура возврата; } }; интервал основной() { Массив arr(3); обр(0, 1); обр(1, 2); обр(2, 3); обр.добавить(4); обр.добавить(5); cout
Я только начал изучать C++ и, чтобы лучше понять, как работает память, я попытался построить массив с динамическим размером на C++. Мне успешно удалось реализовать функции push и get, но когда я попытался добавить функциональность pop, я наткнулся на очень странную ошибку, о которой я не нашел ни одной похожей записи в Интернете, которая произошла при использовании ключевое слово delete, чтобы освободить память.
Вот мой код:
#include #include использование пространства имен std; шаблон класс Массив { Т*птр; публика: внутренний размер; Массив(беззнаковый int original_size): size(original_size) { ptr = (T*) malloc(размер * sizeof(T)); } Множество () { размер = 0; ПТР = 0; } void set(int pos, T val) { ptr[pos] = значение; } T get(int pos) { вернуть ptr[pos]; } T оператор[] (int i) { вернуть получение (я); } void оператор() (int pos, T val) { установить (поз., вал); } void add(значение T) { ptr = (T*) realloc(ptr, (++size) * sizeof(T)); set(размер - 1, значение); } Т поп() { Т темп = получить (--размер); удалить (ptr + размер); температура возврата; } }; интервал основной() { Массив arr(3); обр(0, 1); обр(1, 2); обр(2, 3); обр.добавить(4); обр.добавить(5); cout
Мобильная версия