C动态分配的数组使用memset进行初始化

标签 c memory malloc memset

所以我编写了一个关于动态分配的 char 数组的程序,该程序尚未完成,但我在运行该程序后得到了一些不同的返回值,没有警告,编译器中没有错误,所以我不不知道为什么我有时也会收到这个程序崩溃..

#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
int main(){
int n,i;
char *tab=NULL;
printf("New size of array: ");
scanf("%d",&n);
tab=(char*)malloc(n*sizeof(char));
memset(tab,'X',n*sizeof(tab));
for(i=0;i<n;i++)
    printf("%c",tab[i]);
free(tab);
return 0;
}

最佳答案

在你的 memset 中你写了 n * sizeof(tab),我想你想写: n * sizeof(字符)

为了安全起见,您还可以在 malloc 的末尾添加 +1 并检查返回值。

关于C动态分配的数组使用memset进行初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34844883/

相关文章:

c - 从文件中读取数据并将值存储在 C 中

c - 浮点异常C为什么是什么?

ios - 使用 ARC 将 C 库添加到项目时出错

css - 浏览器处理真正海量的图像

C - 使用具有大尺寸参数的 malloc 时出现段错误

c++ - 是否有一个 lib(跨平台)来处理操作系统日期?

objective-c - 关于objective-c中setter的一个问题

c 访问不同翻译单元中的数据成员

c - 动态分配固定长度字符串的二维数组

c - 如何检查数据是否仍在内存中