Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sshh
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 9
#1

Выделение динамической памяти для char - C++

11.03.2014, 20:56. Просмотров 419. Ответов 3
Метки нет (Все метки)

Здравствуйте, возник вопрос: как выделить память для char массива?
Вот, что делаю я:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdafx.h"
#include<iostream>
 
using namespace std;
int main(){
    setlocale(LC_ALL,"Russian");
    char k=9;
    
    char *d=new char[k];
    cout<<k<<" и выделили памяти:"<<strlen(d);
 
}
И при таком раскладе strlen(d) выводит на экран 13, но почему она выводит 13, когда я запросил 9? и почему я могу, к примеру, обратится к d[150] и мне не выдадут ошибки переполнения?
В общем прошу помочь мне разобраться, как мне выделить ровно 9 слотов для массива чар.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 20:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделение динамической памяти для char (C++):

Выделение динамической памяти для char[n]* - C++
Есть количество цитат (quote), которые должны быть типа char* Есть переменная с колличеством цитат (quoteNum) Вопрос: как выделить...

Выделение динамической памяти для матрицы - C++
Здравствуйте! Подскажите, пожалуйста, что делаю не так..написала программу, которая считывает двумерный массив...с помощью операторов...

Выделение динамической памяти для матрицы - C++
Эта программа преобразует матрицу со случайными числами в матрицу, которая показана на рисунке ниже. Ее нужно переделать так, чтобы...

Выделение динамической памяти для массива точек - C++
Доброго времени суток. Вот у нас есть структура точка struct point { double x,y; } p;

Выделение динамической памяти для двумерного массива. - C++
#include &lt;iostream&gt; int main() { setlocale( LC_ALL,&quot;Russian&quot; ); int N, M; std::cout &lt;&lt; &quot;Введите кол-во строк в массиве:...

Выделение и удаление памяти, выделенной для динамической строки - C++
Данная функция производит ввод и собственно контроль ввода (размер массива от 1 до 20, иначе должна выдавать ошибку; при вводе букв также...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
11.03.2014, 21:02 #2
Выделение нормальное, просто strlen ищет символ \0, который может быть где угодно.
Массив при выделении не обнуляется
Sshh
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 9
11.03.2014, 21:08  [ТС] #3
Спасибо, теперь буду учитывать \0.
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
11.03.2014, 21:11 #4
контроль переполнения - это настройки компилятора, по дефолту они отключены.
Если сильно надо - можно включить, но лучше писать программу с осознанием ответственности.

Кстати, если писать за пределы массива это может отразиться на значениях других переменных, размещенных в памяти рядом с массивом. Удивительные эффекты можно получить - ни в жизнь ошибки не найти...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2014, 21:11
Привет! Вот еще темы с ответами:

Выделение динамической памяти для чтения каждой структуры из файла - C++
Здравствуйте! Никак не получается выделить динамическую память под каждую структуру из файла, учитывая, что я не знаю сколько структур в...

Динамические выделение памяти и инициализация для char* - C++
MrGluck, как правильней?#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;cstring&gt; int main(void) { char *ch = new...

Динамическое выделение памяти для массива указателей на char - C++
Доброго времени суток! пытаюсь выделить память для массива указателей на char следующий код #include &lt;iostream&gt; #include &lt;string.h&gt;...

Выделение динамической памяти - C++
Чем int *List = new int; delete List; отличается от обычного массива (int List) ? Нет, я понимаю, что создал динамическую...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.03.2014, 21:11
Ответ Создать тему
Опции темы

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