powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка выделения памяти
10 сообщений из 10, страница 1 из 1
Ошибка выделения памяти
    #38644568
TAIPHOON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется фрагмент кода (деление строки на массив строк):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
	int StrPos=0;
	int StrNum=0;
	int StrPrevBegin=0;
	tmpSubStr=new wchar_t*[Len];//Len ранее посчитан и равен количеству L'\n'
//////Тест какой то хрени с выдедением памяти
//	for(int i=0;i<Len;i++)
	{
//		tmpSubStr[i]=new wchar_t[10]; - этот вариант выделения работает корректно
	}
//////Окончание теста какой то хрени с выдедением памяти
	//делим на строки
	bool NeedExit=false;
	do
	{
		if((tmpstr[StrPos]==L'\n')||(tmpstr[StrPos]==L'\0'))
		{
			tmpSubStr[StrNum]=new wchar_t[StrPos-StrPrevBegin+2];
			wcsncpy(tmpSubStr[StrNum],(tmpstr+StrPrevBegin),StrPos-StrPrevBegin);
			tmpSubStr[StrNum][StrPos-StrPrevBegin]=L'\0';
			StrPrevBegin=StrPos+1;
			if((StrPos>0)&&(tmpstr[StrPos-1]!=L'\n'))//проверка на пустую строку
			{
				StrNum++;
			}
			if(tmpstr[StrPos]==L'\0')NeedExit=true;
		}
		StrPos++;
	}while(!NeedExit);


Проверяю на моменте "tmpSubStr[StrNum]=new wchar_t[StrPos-StrPrevBegin+2];": смотрю адреса tmpSubStr[0], tmpSubStr[1], tmpSubStr[2], tmpSubStr[3], tmpSubStr[4].
Записался адрес tmpSubStr[0] - норм
Записался адрес tmpSubStr[1] - вроде тоже норм
Записался адрес tmpSubStr[2] - совпадает с tmpSubStr[1] WTF???
Записался адрес tmpSubStr[1] - тоже совпадает с tmpSubStr[1] WTF???
Дальше всё норм.
Подскажите плз, где я туплю?
...
Рейтинг: 0 / 0
Ошибка выделения памяти
    #38644591
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAIPHOONгде я туплю?
Да я бы сказал - везде. Ты путаешь сравнение строк со сравнением указателей на строки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка выделения памяти
    #38644606
TAIPHOON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это где я сравниваю строку с указателем?
Я смотрю на адреса tmpSubStr[0] ... tmpSubStr[3]
*В строке "Записался адрес tmpSubStr[1] - тоже совпадает с tmpSubStr[1] WTF???" опечатка - подразумевался указатель на tmpSubStr[3]
...
Рейтинг: 0 / 0
Ошибка выделения памяти
    #38644620
TAIPHOON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополнение:
Если количество выделяемой памяти указать константой, а не "StrPos-StrPrevBegin+2", то всё работает нормально.
Что не так в вычисляемом значении?
...
Рейтинг: 0 / 0
Ошибка выделения памяти
    #38644626
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAIPHOON,

по-человечески цикл напиши.
как минимум утечки памяти наблюдаю, под лишний символ память выделяется
ознакомься с break и continue
...
Рейтинг: 0 / 0
Ошибка выделения памяти
    #38644632
TAIPHOON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилпо-человечески цикл напиши.
как минимум утечки памяти наблюдаю, под лишний символ память выделяется
ознакомься с break и continue
Спс. Лишний символ - остатки:(. Изначально по другому писал. Утечки ещё где то?
break я знаю, но не очень люблю. Как то столкнулся с тем, что на разных компиляторах он по разному себя повёл. После того стараюсь использовать флаг выхода.
"continue" - есть такое, но ту то для чего?
...
Рейтинг: 0 / 0
Ошибка выделения памяти
    #38644633
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAIPHOONЭто где я сравниваю строку с указателем?
А, пардон, это я спутал tmpstr и tmpSubStr.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка выделения памяти
    #38644634
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAIPHOON. Утечки ещё где то?
на пустой строке. если строка пустая - память выделять не надо

ЗЫ код нечитаем совершенно что и приводит к ошибкам
...
Рейтинг: 0 / 0
Ошибка выделения памяти
    #38644637
TAIPHOON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИзопропилTAIPHOON. Утечки ещё где то?
на пустой строке. если строка пустая - память выделять не надо

ЗЫ код нечитаем совершенно что и приводит к ошибкам
За пустую строку спс - исправлю.
"код нечитаем" - имеется ввиду именование или форматирование?
Я последний раз более менее нормально писал лет 7 назад, после того иногда "для себя чуток". Совершенно всё позабыл:(.
ЗЫ
Самое интересное, что когда изменил "StrPos-StrPrevBegin+2" на "StrPos-StrPrevBegin+1" глюк пропал. Я в шоке.
...
Рейтинг: 0 / 0
Ошибка выделения памяти
    #38644644
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAIPHOON"код нечитаем" - имеется ввиду именование или форматирование?
структура управления, многократное вычисление StrPos-StrPrevBegin
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка выделения памяти
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]