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

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

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

Кстати, если писать за пределы массива это может отразиться на значениях других переменных, размещенных в памяти рядом с массивом. Удивительные эффекты можно получить - ни в жизнь ошибки не найти...
Yandex
Объявления
11.03.2014, 21:11     Выделение динамической памяти для char
Ответ Создать тему
Опции темы

Текущее время: 04:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru