当我声明一个char指针然后为它分配一个字符串常量时,内存分配是如何发生的?

时间:2016-05-18 07:23:21

标签: c char heap-memory

我见过像

这样的声明
char strng[20]="";
strcpy(strng,"Some_String");

这里很清楚,当我声明strng[20]时,我为这个字符数组保留了20个内存位置(字节),所以我可以将任何字符串复制到它,这个字符串长度差不多是20个字符。

此外,还有像

这样的声明
char *strng;
strng=(char*)malloc(sizeof(char)*n);

将创建一个字符指针(2个字节),然后通过malloc分配内存,并将分配的内存的基地址分配给strng。这里将分配n个字节。

但是,我看过像

这样的声明
char *srtng;
strng="Some_Very_Long_Text";

那么,在这种情况下如何分配内存?在这里,我声明一个char指针(2个字节),然后为其分配一个字符串。如果此字符串的大小为n,那么该字符串的存储方式和位置如何?我的指针只保存其基地址。何时分配内存以及如何分配?我甚至不在这里使用malloc

0 个答案:

没有答案