Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Sapanonic
0 / 0 / 0
Регистрация: 23.05.2015
Сообщений: 12
1

Malloc Segmentation fault

16.03.2016, 10:24. Просмотров 212. Ответов 4
Метки нет (Все метки)

Добрый день.
И еще раз рискну побеспокоить коллективный разум своими глупыми вопросами.
Есть у меня некоторая программа в тексте которой есть такие строки:
C++
1
2
    size_t x=256;
    char *test=(char*)malloc(x);
Так вот, при значениях x 41-256 программа на malloc вываливается по Segmentation fault. Если x принимает значения 0-40 или 257-100000000(больше не проверял) то все работает нормально.
Текст всей программы приводить не вижу смысла, т.к. меня интересует вопрос - почему в принципе может возникнуть такая ошибка? Ведь вроде malloc сам к памяти не обращается, и уж совсем непонятны магические числа x.
MinGW (gcc version 5.1.0)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2016, 10:24
Ответы с готовыми решениями:

Segmentation fault
Пишу лабу для универа. В общем необходимо использовать только свои функции, никаких, str......

Segmentation fault
Пытаюсь реализовать генетический алгоритм на с++. Всего существует два класса: GeneticEngine,...

Segmentation fault
Кусок кода: template <typename Type> class Queue { private: struct Elem ...

Segmentation fault
Почему при таком варианте происходит Segmentation fault? vec3f trace(const Scene& scene, const...

Segmentation fault
не могу скинуть код по личным причинам. я использую строковые операторы strcmp, strcpy. выводит...

4
FiLF
54 / 54 / 37
Регистрация: 05.09.2013
Сообщений: 1,866
16.03.2016, 10:30 2
Где-то куча повреждена. Нужно смотреть весь код.
0
DrOffset
8150 / 4728 / 1157
Регистрация: 30.01.2014
Сообщений: 7,701
16.03.2016, 10:42 3
Цитата Сообщение от Sapanonic Посмотреть сообщение
меня интересует вопрос - почему в принципе может возникнуть такая ошибка?
Если падает именно сам malloc, то соглашусь с ответом выше. Ошибка такого рода происходит из-за расстрела памяти кучи где-то в другой части программы. Подсказка: скорее всего где-то есть запись за пределы выделенной динамической памяти или, например, некорректное освобождение памяти (непарный деаллокатор, двойное освобождение, еtс.). Вследствие этого могли быть затронуты какие-либо управляющие структуры данных, которыми пользуется malloc, что и приводит к некорректной его работе.
1
HighPredator
5680 / 2002 / 720
Регистрация: 10.12.2010
Сообщений: 5,761
Записей в блоге: 3
16.03.2016, 11:07 4
Есть теоретическая вероятность того, что вы раздули стек до недопустимых размеров создав сверхдлинную цепочку вызовов. Это возможно, если например функция, в которой у вас маллок является рекурсивной с колоссальной глубиной.
0
rikimaru2013
16.03.2016, 13:13     Malloc Segmentation fault
  #5

Не по теме:

Со стороны всё это похоже на "Шоу интуиция"

0
16.03.2016, 13:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2016, 13:13
Привет! Вот еще темы с ответами:

Segmentation fault
Всем привет. Пишу быдлокод для лабы в универе. Мне по определенному алгоритму необходимо получить...

Segmentation fault :(
#include<iostream> #include<fstream> using namespace std; struct test{ int id; char name;...

Segmentation fault
Здравствуйте. Нужно динамически получить такое: char * a = {"abc", NULL}; Пробую: char ** a; a...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru