标签: memset

unistd.h read()正在读取更多数据然后被写入

我正在从命名管道读取/写入数据.在写作方面,它表示它正在写一个恒定的110字节.在阅读方面,大多数时候它表示它正在读取110个字节,这是正确的,但有时它说它读取220字节或330字节.这是正确的,当我打印出来时,它在同一个read()中连续两次或三次打印出相同的消息.在下面的代码中读取我在memset上做错了什么来清除char?除非在缓冲区遗留一些东西,否则我无法想到它正在阅读的任何其他方式.

int fd1, numread;
char bufpipe[5000];

    while(1)
    {
        fd1 = open("/tmp/testPipe", O_RDONLY);
        numread = read(fd1,bufpipe, 5000);//->this should always be 110
        if(numread > 1)
        {
            printf("READ: %i", numread); 
            bufpipe[numread+1] = '\0';
            memset(bufpipe,'\0',5001);
            close(fd1);
        }
    }
Run Code Online (Sandbox Code Playgroud)

c++ unix named-pipes memset unistd.h

0
推荐指数
1
解决办法
1594
查看次数

memset用于内存分配?

我在msdn看这个例子:

http://msdn.microsoft.com/en-us/library/ms894209.aspx

DWORD dwResult;

MEMORY_BASIC_INFORMATION mbiMemory;

// Clear the results structure.
memset (&mbiMemory, 0, sizeof(MEMORY_BASIC_INFORMATION));

dwResult = VirtualQuery (lpPage,        // Page to examine
                     &mbiMemory,    // Structure for results
                     sizeof(MEMORY_BASIC_INFORMATION));

if (sizeof(MEMORY_BASIC_INFORMATION) != dwResult)
{

    // Your error-handling code goes here.

}
Run Code Online (Sandbox Code Playgroud)

看起来他们使用memset作为向mbiMemory分配内存的一种方式.好吗?我不会以这种方式跑过一些记忆吗?谢谢!

c memory windows winapi memset

0
推荐指数
2
解决办法
4407
查看次数

如何将相同的int值设置为int数组

我有一个变量:

unsigned int* data = (unsigned int*)malloc(height * width)
Run Code Online (Sandbox Code Playgroud)

我想为所有数组值设置相同的int.我不能使用memset,因为它适用于字节.

我怎样才能做到这一点?

c++ memset

0
推荐指数
1
解决办法
465
查看次数

C Memset输出

#include <stdio.h>
#include <string.h>

int main() {
  char* p = new char[10];
  memset(p,0,10);
  printf("%c",*p);
}
Run Code Online (Sandbox Code Playgroud)

我想memset设置开始每个字节p0.看到什么都没打印出来,我有点惊讶.究竟发生了memset什么?

c memset

0
推荐指数
1
解决办法
350
查看次数

在C++中使用memset和多维数组

我试图用来memset设置一个动态的大小数组rownum x rownmum.但是,当我调用showarr如下所示的函数时48,我得到的是随机/垃圾值,而不是获得全零的输出(即ASCII ).

void showarr(int **a, int rownum)
{
        for ( int i = 0; i < rownum; i++) {
                for ( int j = 0; j < rownum; j++) {
                        cout<<a[i][j]<<endl;
                }
        }
}

int main(int argc, char *argv[])
{
        int n;
        cin>>n;

        int rownum;
        cin>>rownum;
        int **a = new int* [rownum] ;
        for ( int i = 0; i <rownum; i++) {
             a[i] = new int[rownum];
        }
        for (int …
Run Code Online (Sandbox Code Playgroud)

c++ memset multidimensional-array

0
推荐指数
1
解决办法
5005
查看次数

Memset或for循环将多个相同长度的数组归零

我有多个相同长度的数组,我希望用零填充.让我们看看两种方法:

1)

int i;
for(i=0;i<ARRAYSLENGTH;i++){
    arr1[i]=0;
    arr2[i]=0;
    arr3[i]=0;
    ...
}
Run Code Online (Sandbox Code Playgroud)

2)将memset所有数组归零.

在最近的一次代码审查中,我被要求将选项1更改为选项2.这让我想知道,哪种方法更好?主要是:

2被认为比1更可读吗?

这两种方法在效率方面有何比较?(考虑memset通常在汇编中实现,但方法1仅为多个数组递增计数器一次).

c memset

0
推荐指数
1
解决办法
249
查看次数

使用'零'-memset()填充数组不起作用 -

这是代码

int x, y, n, i, j, l, m, o;
printf ("podaj szerokosc planszy na jakiej chcesz zagrac\n");
scanf ("%d", &x);
printf ("podaj dlugosc planszy na jakiej chcesz zagrac\n");
scanf ("%d", &y);
int plansza [x][y];
memset(plansza, 0, sizeof plansza);
int plansza2 [x][y];
memset(plansza2, 0, sizeof plansza2);

printf("plansza: \n");
for(j=0;j<x;j++)
{
    for(l=0;l<y;l++)
    {
        printf("%d",plansza[x][y]);
        printf(" ");
    }
    printf("\n");
}

printf("plansza2: \n");
for(m=0;m<x;m++)
{
    for(o=0;o<y;o++)
    {
        printf("%d",plansza2[x][y]);
        printf(" ");
    }
    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

这就是结果:
结果

不知道为什么memset()根本不起作用,我完全不知道为什么.我应该怎么做才能用零填充数组?

c arrays memset

0
推荐指数
1
解决办法
746
查看次数

C - memset与免费

当调用memset时,我对内存中实际发生的事情感到困惑,而当你调用free时会发生什么.

例如,我有一个指向一个char*数组的指针A.

char** A = (char**)calloc(5, sizeof(char*));
int i;
for(i=0;i<5;i++)
{
  //filling
  A[i] = (char*)calloc(30, sizeof(char)); 
  scanf("%s", &A[i]);
}
Run Code Online (Sandbox Code Playgroud)

现在我想重置它我的char**指针和它指向的所有元素都是完全空的

memset(A, 0, 5);
Run Code Online (Sandbox Code Playgroud)

要么

free(A);
Run Code Online (Sandbox Code Playgroud)

有什么不同?

我对C有点新意,所以请以外行的话说话,谢谢

c free memset

0
推荐指数
2
解决办法
1万
查看次数

memset显示错误的结果

代码是检查在memset中的memset的工作.memset正确初始化数组0但是当我尝试用10初始化它时,它会用一些非常大的垃圾值初始化数组.那有什么问题?

#include <stdio.h>
#include<string.h>
int main(void)
{
    int dp[10008],i;
    memset(dp,10,sizeof(dp));
    for(i=0;i<10;i++)
    printf("%d\n",dp[i]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c memset

0
推荐指数
1
解决办法
689
查看次数

当c中的memset结构数组时出现分段错误

我试图清空struct数组中的所有数据.

但事实证明是分段错误.有人可以帮帮我吗.

结构

struct entry
{
   char  user;
    char  name[9];
    char  extension[4];
    short blockcount;
    short block[8];
};
struct entry directory[128];
Run Code Online (Sandbox Code Playgroud)

主要()

for (int i = 0; i < 128; ++i)
{
      memset(&directory[i], 0, sizeof(directory));
}
Run Code Online (Sandbox Code Playgroud)

c arrays struct for-loop memset

0
推荐指数
1
解决办法
317
查看次数