c语言访问冲突?

如下列,后面的没写上去,最后一行显示访问冲突(for循环内的那个),求教什么情况。
#include<stdio.h>
#include<string.h>
int main()
{
int quantity=0;
char** arr1, ** arr2;
char** arr3;
printf("How many words do you wish to enter?\n");
scanf("%d", &quantity);
arr1 = (char **)malloc(sizeof(char*) * quantity);
arr2 = (char **)malloc(quantity*sizeof(char*));
arr3 = (char **)malloc(sizeof(char*) * quantity);
for (int t = 0; t < quantity; t++)
{
arr2[t] = (char *)malloc(sizeof(char)*20);
}

c语言 写入位置时发生访问冲突是设置错误造成的,解决方法为:

1、用VS2013打开程序。

2、按住CTRL+F5运行代码时会出现如下错误,其实代码本身并没有错误。

3、在上图中点击调试按钮进行调试可以发现如下的错误,即内存写入错误。

4、此时需要更改系统的栈保留空间大小,点击“项目”-“项目属性”。

5、在项目属性页面找到“系统”,并更改堆栈保留大小,建义填写一个较大的数字,如1000000。

6、此后再次编译运行代码,即不会出现内存写入错误了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-02-14

malloc函数定义于头文件stdlib.h,需要包含此头文件。

经此修改后,使用正常:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int main()

{ int quantity=0;

  char** arr1, ** arr2;

  char** arr3;

  printf("How many words do you wish to enter?\n");

  scanf("%d", &quantity);

  getchar();

  arr1 = (char **)malloc(sizeof(char*) * quantity);

  arr2 = (char **)malloc(quantity*sizeof(char*));

  arr3 = (char **)malloc(sizeof(char*) * quantity);

  for (int t = 0; t < quantity; t++)

  { arr2[t] = (char *)malloc(sizeof(char)*20);

    gets(arr2[t]);

    puts(arr2[t]);

  }

 return 0;

}

本回答被提问者和网友采纳
第2个回答  2022-06-19
3月21日早盘,NMN长寿药概念股再度走强。截至发稿,尔康制药、众生药业、康汇药业等多股涨停,金达威、兄弟科技、友阿股份等纷纷跟涨。艾瑞咨询数据显示,2020年中国NMN成分保健品市场规模达51.06亿元,同比增长34.87%,预计到2023年将会以近70.25%的增速攀升至270.13亿元,行业发展速度较快。中信证券此前发布的研报指出,NMN全称为β-烟酰胺单核苷酸,是人体中合成NAD+(辅酶I)的前体,由于NAD+在细胞中是几百种重要代谢酶的辅酶,并作为信号分子参与许多重要细胞过程,与能量代谢、糖酵解、DNA复制等活动都息息相关,而NMN可以提高体内NAD+水平,被认为是一种具有抗衰老功能的保健品。与其他产品相比,NMN产品提升NAD+具有无毒副作用、转化高效等优点。该机构表示,延长寿命作为人类终极问题之一,在全球经济增长和人口老龄化不断加重的背景下,市场关注度和规模持续提升,2019年全球抗衰老市场规模1900亿美元,同比增长8.3%。中国市场近些年保健品行业发展迅速,行业过去10年复合增速9.5%。根据测算,当前国内每1%保健品人口对应的NMN市场空间为304亿元,伴随未来抗衰老产品不断推广,行业远期市场有望达到千亿规模。中信证券指出,NMN作为一种抗衰老保健品,预计未来我国具有千亿市场规模的潜力,当前市场刚刚起步。目前市场主要被三家境外厂商主导,主流商品主要以进口为主,境内企业目前普遍处于追赶状态。当前境内已经率先布局产品的公司有望分享千亿市场规模,未来利用境内企业在人员、效率等方面的优势,有望在行业竞争中获得综合竞争优势,建议关注金达威等。
第3个回答  2022-02-14
是不是应该写成*are2[i]
还有,你得加个判断是不是内存申请成功。
如果are2申请失败了,你这样操作也存在风险
第4个回答  2022-02-13

arr2[t] = (char *)malloc(sizeof(char)*20);

本回答被网友采纳
相似回答