Ошибка отладки в визуальной студии

0

Я получаю эту ошибку в визуальной студии: ошибка отладки отключена! Выражение: (L "Буфер слишком мал" && 0)

Это происходит в следующих строках кода:

program_name = (char *) malloc(strlen(argv[0])+1);
strcpy_s(program_name,sizeof(program_name),argv[0]);

Кажется, размер буфера, который он пытается скопировать массив символов, слишком мал, но я не уверен, почему?

Теги:
visual-studio-2012

1 ответ

3
Лучший ответ

sizeof(program_name) возвращает размер указателя на char. Это не то, что вы хотите. Замените это с помощью strlen(argv[0])+1 чтобы передать размер выделенного буфера.

Однако также обратите внимание, что в C++ было бы лучше просто использовать std::string:

std::string program_name(argv[0]);
  • 0
    Спасибо, я только что нашел это, прежде чем я увидел твой ответ.
  • 0
    @trueinViso: np, sizeof(program_name) будет 4 или 8 зависимости от того, используете ли вы 32-разрядную или 64-разрядную платформу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню