第一点,是sizeof而不是SIZEOF,改过来试试。
第二点,如果是宏本身的问题,把宏去掉,在引用宏的地方直接引用memset函数试试。
第三点,如果上述方法都不能解决问题,那么,是你代码的问题了,具体报什么错?
str2 = list1.at(2)+","+list1.at(3)+","+list.at(4)//我觉得问题可能在这 因为你每次读到得数据时不一样的 不能确保切割后都能分成4个 对list的越界访问造成程序崩溃 你可以把buf的内容输出看一下 看是不是能分割成四个!
这个函数是不能在int型数组的情况下初始化为1的,但0就可以。除非你改为char a[100]memset(a,1,sizeof(a))printf("%d"a,[1])
-------------------------------------------------内存初始化函数memset()用法详解
作用:在一段内存中填充某个给定的值,注意填充时是按照字节顺序填充的,而不是按照元素填充。
此方法是对较大的结构体和数组进行清零 *** 作的一种有效方法。
函数形式:memset(void *buffer,int c,size_t n)
buffer是需要设置的内存的开始地址;c是期望填充值;n是需要填充的字节数。
例1:一个int a[10]型变量,则memset(a,100,sizeof(int))此 *** 作后,元素a[0]的每个字节的值都是100,即0x64,二进制表示:01100100,所以元素a[0]为0x64646464,二进制表示:01100100 01100100 01100100 01100100
void main()
{ int i,a[20]
memset(a,10,5*sizeof(int))
for(i=0i<20i++)
cout<<a<<endl
}
此函数输出的10个元素并非10,而是每个字节都是00001010组成的int型数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)