Какова самая опасная функция C++? [закрытый]

При использовании PHP 5 можно также попробовать

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
10
задан Mizipzor 7 July 2009 в 18:01
поделиться

11 ответов

delete [] array;

иногда может стать

delete array;

в руках того, кто не знает. Отслеживание этой ошибки может ужасно отстой, и этого не происходит, когда вы выполняете malloc и free.

11
ответ дан 3 December 2019 в 15:06
поделиться

Переполнение буфера должно быть самой опасной вещью как в C, так и в C ++. Это также причина того, что Microsoft объявила о добавлении memcpy () в свой список запрещенных функций

множественное наследование - еще одно

7
ответ дан 3 December 2019 в 15:06
поделиться

Новички легко могут пропустить требование виртуального деструктора (хотя я думаю, что большинство компиляторов достаточно умны, чтобы указать на это).

5
ответ дан 3 December 2019 в 15:06
поделиться

Я передал this вспомогательной функции в другом объекте из конструктора. Вспомогательная функция добавила указатель к списку объектов, которые она обслуживала. Конечно, после того, как конструктор завершил работу и возвратился, объект находился в совершенно другом месте в памяти, и указатель, хранящийся в другом объекте, больше не действовал. Ура!

2
ответ дан 3 December 2019 в 15:06
поделиться

Перегрузка оператора . Очень легко усложнить понимание происходящего. Даже опытным разработчикам C ++ легко не заметить тот факт, что происходит перегрузка.

2
ответ дан 3 December 2019 в 15:06
поделиться

Я бы сказал автоматическое преобразование типов. C ++ может создавать временные переменные неинтуитивно с помощью автоматического преобразования типов.

2
ответ дан 3 December 2019 в 15:06
поделиться

Его реализация обработки исключений позволяет легко устранить утечки памяти.

1
ответ дан 3 December 2019 в 15:06
поделиться

Вероятно, самый опасный аспект C ++, которого нет в C, - это возможность переопределять операторы для сложных типов. Например, может быть очень легко произвести сложение вычитанием (и наоборот).

Глупо, что кто-то сделает это, но это можно сделать. Делает это опасным.

0
ответ дан 3 December 2019 в 15:06
поделиться

Меня всегда интересовала эта цитата. Я не могу придумать, каким образом C ++ более опасен, чем C.

В любом случае, я должен сказать, что самая опасная «особенность» заключается в том, что ничто не мешает вам получить доступ нераспределенная память. Это ошибка, которую практически невозможно отладить, она вызывает всевозможные случайные действия, от сбоев до полного отсутствия ошибок и просто странного поведения.

0
ответ дан 3 December 2019 в 15:06
поделиться

Если вы собираетесь сравнивать безопасность C ++ и C, то вы упустили суть этой фразы. C ++, возможно, не безопаснее C.

Где действительно можно провести сравнение, так это с таким языком, как Java. По сути, Java обрабатывает вашу память за вас, поэтому вы не столкнетесь с неопределенным поведением при вызове памяти вне той памяти, которую ваша программа в настоящее время использует (выход за пределы массивов и т. Д.).

Чтобы ответить на ваш вопрос однако худшее, что со мной случилось, - это переполнение буфера, чтобы переопределить мой собственный пароль (однако я сделал это специально).

0
ответ дан 3 December 2019 в 15:06
поделиться
  • Перегрузка оператора, если не реализована правильно
  • множественное наследование (легко использовать неправильно)
  • переполнение буфера
0
ответ дан 3 December 2019 в 15:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: