8 / 8 / 2
Регистрация: 26.09.2007
Сообщений: 604
1

Указатели malloc

15.06.2021, 17:32. Показов 1217. Ответов 5
Метки нет (Все метки)

Этот код компилируется без ошибок но при работе вылетает с ошибкой. Печатает в консоли 66 и вылетает. Почему?
Заранее спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
    int * v =  static_cast<int*> (malloc(4));
 
    v[0] = 44;
    v[1] = 55;
    v[2] = 66;
    v[3] = 77;
 
    cout << v[2] << endl;
 
    free(v);
    
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2021, 17:32
Ответы с готовыми решениями:

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно....

Через указатели на указатели посчитать сумму двух чисел и записать в третье
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать...

Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей?
Доброго времени суток! Задался теоретическим вопросом. Читал пример из книги Лафоре...

Используя нетипизированные указатели и указатели на подпрограммы обобщить сортировку пузырьком
Смысл задания в том, что нужно отсортировать массив структур из 3х полей по сумме координат есть...

5
Модератор
Эксперт CЭксперт С++
5104 / 4533 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
15.06.2021, 17:35 2
Лучший ответ Сообщение было отмечено kurlyak как решение

Решение

kurlyak, malloc(4) - это запрос не 4-х слов, а 4-х байт! Сделайте malloc(4 * sizeof(int))
1
"C with Classes"
1581 / 1360 / 511
Регистрация: 16.08.2014
Сообщений: 5,647
Записей в блоге: 1
15.06.2021, 17:37 3
Цитата Сообщение от kurlyak Посмотреть сообщение
Почему?
потому что память чужую испортил.
malloc принимает в качестве аргумента число байт, а в int скорее всего 4 байта.
C++
1
int * v =  static_cast<int*> (malloc(4 * sizeof(int) ));
1
Продавец времени
7129 / 4005 / 924
Регистрация: 12.03.2015
Сообщений: 18,836
15.06.2021, 19:52 4
C++
1
int* v = (int*)calloc(4, sizeof(int));
1
alecss131
15.06.2021, 21:17
  #5

Не по теме:

в плюсах бы использовать malloc/free
странно что никто не заикнулся, ведь это же си-стайл, у плюсов для этого есть new/delete

0
599 / 831 / 141
Регистрация: 10.08.2015
Сообщений: 4,194
15.06.2021, 21:21 6
Цитата Сообщение от alecss131 Посмотреть сообщение
в плюсах бы использовать malloc/free

Не по теме:

вот это ни разу не офтоп
вот просто даже бесит.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2021, 21:21
Помогаю со студенческими работами здесь

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной
Мой код. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include&lt;iomanip&gt; using namespace std; ...

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов?
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;//...

Зачем нужны все эти указатели (или не указатели)
Зачем надо DWORD, HANDLE, LPVOID?

Указатели на указатели: для чего они могут понадобятся?
Изучаю C++, дошёл до указателей на указатели. Там пишут что эта тема не обязательна. Для чего они...

Отсортировать массив и вывести на экран (массивы и указатели на указатели)
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s- результат сессии F...

Указатели на указатели, как правильно разыменовать, где ошибка?
1)Есть класс: Shape - абстрактный; у него есть классы наследники: Circle, Triangle. 2)Eсть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru