无法更改char数组中的字符

安迪

根据这个问题:我什么时候应该在C中使用malloc,什么时候不应该?

使用malloc分配内存应该可以让我更改数组中的字符之一。但是,该程序在运行时崩溃。有人可以请教吗?(还会free(ptr)导致其他崩溃,这就是为什么它被注释掉了)。

char* ptr;
ptr = (char *)malloc(sizeof(char[10]));
ptr = "hello";
ptr[0] = 'H';
printf("The string contains: %s\n", ptr);
//free (ptr);
return 0;
谢尔盖·卡里尼琴科(Sergey Kalinichenko)

您的程序崩溃,因为这一行

ptr = "hello";

完全取消malloc上一行的效果

ptr = malloc(sizeof(char[10])); // No need to cast to char*

并且还会在此过程中造成内存泄漏,因为malloc赋值后返回的地址将不可恢复地丢失。

分配完成后,尝试进行设置会ptr[0] = 'H'导致崩溃,因为您正在尝试修改字符串文字本身的内存-即未定义的行为。

如果要在以后修改它们,则需要复制C语言中的字符串,而不分配它们。strcpy呼叫替换任务,以解决此问题。

strcpy(ptr, "hello");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在java中,用空字符更改char数组的大小

来自分类Dev

更改char *数组中的一个字符而不转换为char [] []

来自分类Dev

如何更改字符数组中的字符

来自分类Dev

检查char数组中的无效字符

来自分类Dev

无法从C中的stdin打印char数组

来自分类Dev

C ++中的char数组无法正常运行

来自分类Dev

将字符串更改为Char数组

来自分类Dev

无法使用\ n分割从char数组创建的字符串

来自分类Dev

无法将字符串转换为char数组

来自分类Dev

将char数组复制到字符指针数组中

来自分类Dev

更改char []数组的元素

来自分类Dev

无法更改数组中的元组

来自分类Dev

无法更改数组php中的值

来自分类Dev

访问数组列表中的字符串中的char

来自分类Dev

Char无法在C中的多维数组中工作。需要澄清

来自分类Dev

在char数组中搜索子字符串

来自分类Dev

从char数组中删除字符时出现问题

来自分类Dev

满足IF语句时替换字符串数组中的char

来自分类Dev

空字符串如何存储在char数组中?

来自分类Dev

char数组中的字符数按降序排列

来自分类Dev

Scala从char数组中获取字符串列表

来自分类Dev

如何在char []数组中手动输入字符?

来自分类Dev

char 数组中的数字打印为随机字符

来自分类Dev

如何清除char数组中的单个字符?

来自分类Dev

无法通过strcpy从参数复制到char数组中

来自分类Dev

将char存储在数组C中无法正常工作

来自分类Dev

无法通过strcpy从参数复制到char数组中

来自分类Dev

用C中的多个字符替换字符串(char数组)中的字符

来自分类Dev

用C中的多个字符替换字符串(char数组)中的字符