C语言中的动态分配

来源:百度知道 编辑:UC知道 时间:2024/06/05 17:40:25
pt = ( ( char* ) malloc( 10 * sizeof( char ) ) );
这句是不是最多存储10个字符,我刚才试了下,不止10个字符.但我昨晚在家试了下,存储大于10个字符就存储不了.各位,有空帮我回答下.
那我平时申请空间我只申请这种不就行了?
pt = ( ( char* ) malloc( sizeof( char ) ) );

malloc分配了10个字节内存空间,并且将这10字节清空了,然后返回首地址给指针pt。
(1)当你输入字符数小于等于10,就存储在分配的内存空间中。
(2)如果输入字符大于10个,那么前10个是存储在malloc分配的内存空间中
剩下的字符分两种情况:
a.如果紧接着10字节后面的那段内存空间没有其他进程使用,则存储剩下的字符。
b.如果那段内存属于其他运行的程序所有,则就会产生错误。

表示申请10 个char 类型字符的空间.

是分配了10个字符长度,但输入多于10个时出现了越界,越界不一定会出错

malloc的参数不一定要是常量,所以好在要不确定长度的内存时,而且动态分配的是可以自己释放的(用free()),可以节约内存啊