关于malloc字符串长度的问题

问题描述

关于malloc字符串长度的问题
   刚刚在调试malloc出来字符串长度时发现最后输出strlen(a)总是比sizeof(a)后面乘的数多4,这是为什么?多出来的4是哪里的?新手提的问题比较笨,希望能解决,谢谢~

#include
#include
int main() {
char *a = (char *)malloc( sizeof(char) * 4 );
printf( "strlen(a)=%dn", strlen(a) ); //输出总是多4
return 0;
}

解决方案

不明白你的多4指的是什么

解决方案二:

我在这个网站
http://zhidao.baidu.com/link?url=hGvzf_-ujpKPZH94t3Bz1v5lmjpVeQvUOdjYvcaJWAkFZ4rjDHsxaaU_dI1uWlKFd5qjKQPtaKqTCIMPAkGuW_

上感觉说的还不错,他的意思好像是因为只malloc了没有初始化,所以malloc空间如果是不连续的,编译器不知道哪里会有'',而strlen只有找到''才会返回字符串的长度,所以strlen一个malloc的字符串不会正好返回我sizeof()后乘的那个数。不知道是不是这个原因??看来又要和编译原理有关了,还得继续学习啊~

解决方案三:

我在机器上运行的是这个结果,我用的是VC 6.0, 是不是编译器不同??

时间: 2024-08-31 08:23:13

关于malloc字符串长度的问题的相关文章

c++-函数中字符串用cout输出与字符串长度没有关系吧!

问题描述 函数中字符串用cout输出与字符串长度没有关系吧! 下面的代码运行于VS2012的编译环境,目的是为了对出现的19个国家名称进行按大到小排序,遗憾的是,结果结果并没有得出. 但有一点,若是将主程序中的 pCountryName这一指针数组中的"United States of America"缩减一个字符如变为"United State of America",程序将运行无恙. 同样的代码,放置于Vc++6.0的编译环境却不会出现问题! 程序在执行过程中,

js 判断字符串长度:计算字符串长度/判断空

计算字符串长度可用的三种方法:   echo "$str"awk '{print length($0)}'  expr length "$str"  echo "$str"wc -c  但是第三种得出的值会多1,可能是把结束符也计算在内了. 判断字符串为空的方法有三种:   if [ "$str" = "" ]  if [ x"$str" = x ]  if [ -z "$st

测字符串长度函数

函数|字符串 '*************测字符串长度************** Function CheckStringLength(txt)txt=trim(txt)x = len(txt)y = 0for ii = 1 to xif asc(mid(txt,ii,1)) < 0 or asc(mid(txt,ii,1)) >255 then '如果是汉字y = y + 2elsey = y + 1end ifnextCheckStringLength = y End Function

ASP获取字符串长度的自定义函数

ASP获取字符串长度的自定义函数 '----------------------------------------------------------------'' getStrLen' 获取字符长度,一个中文字符长度算 2' 参数:' str 需要获取长度的字符串' 返回值:整数 (字符串的长度)'----------------------------------------------------------------'Function GetStrLen(str)If IsNull

JavaScript如何判断字符串长度(英文占1个字符,中文汉字占2个字符)

//计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: String.prototype.gblen = function() { var len = 0; for (var i=0; i<this.length; i++) { if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) { len += 2; } else { len ++; } } return len; } 方法二: function strlen(str){

sp判断中西混字符串长度

sp判断中西混字符串长度 ==============================  函 数 名:StringLength  作    用:判断字符串长度  参    数:需进行判断的文本Txt  ==============================  Private Function StringLength(Txt)   Txt=Trim(Txt)   x=Len(Txt)   y=0   For ii = 1 To x    If Asc(Mid(Txt,ii,1))<=2 o

支持中文的PHP按字符串长度分割成数组代码

  自己编写的PHP按字符串长度分割成数组代码,支持中文字符,下面给出代码和使用方法,有需要的小伙伴可以参考下. 以下是我编写的代码,实现对中英文混杂字符进行分割: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <?php function mbStrSplit ($string, $len=1) { $start = 0; $strlen = mb_strlen($string); while ($strlen) { $array[] =

C++不使用变量求字符串长度strlen函数的实现方法

  本文实例讲述了C++不使用变量求字符串长度strlen函数的实现方法.分享给大家供大家参考.具体实现方法如下: 1.strlen的源码实现: ? 1 2 3 4 5 6 7 size_t strlen(const char *str) //strlen不做内存非法判断,如果是NULL,会core. { const char *eos=str; while(*eos++); return (eos-str-1); } 2.常见面试题会要求不使用额外变量,实现strlen函数: 实现一: ? 1

Lua获取utf8字符串长度和字符串截取并用...代替

  这篇文章主要介绍了Lua获取utf8字符串长度和字符串截取并用...代替,本文直接给出两个函数的实现代码,需要的朋友可以参考下 一.LUA获取utf8字符串长度 代码如下: --- 获取utf8编码字符串正确长度的方法 -- @param str -- @return number function utfstrlen(str) local len = #str; local left = len; local cnt = 0; local arr={0,0xc0,0xe0,0xf0,0xf