Tag: 内存

变量的声明如何表现?

#include #include int main(){ char i; int c; scanf(“%i”,&c); scanf(“%c”,&i);// catch the new line or character introduced before x number printf(“%i”,i);// value of that character getch(); return(0); } 程序将以与下一个变量声明相同的方式运行,而不是上述变量声明: 这个: int c; int *x; int i; 或这个: int *x; int c; int i; 并且只有这样: c变量和i变量之前的x指针。 我知道那些最后的声明没有意义, int i而不是char i ,以及一个甚至不需要的添加指针。 但这是偶然发生的,我想知道这是否只是一个巧合。

具有C语言function的realloc结构

我的C程序崩溃了,我太新了,无法弄明白。 到目前为止它非常简单,我想代码足以弄清楚出了什么问题。 我只是想逐行读取文件。 一旦我内存不足,我会将结构的内存加倍。 如果这还不够,我会提供您需要的任何其他信息。 非常感谢您的帮助,因为我已经被困了好几个小时了。 /* John Maynard 1000916794 7/15/2013 HW-06 */ #include #include #include #define N 100 struct course { char subject[11]; int catalogNum; int sectionNum; int enrollmentTotal; int enrollmentCap; }; void readFile(struct course *d, char* filename); void double_array_size(struct course *d, int new_size); int main(void) { char *filename = “hw06-data.csv”; struct course *d; […]

使用C从C ++访问公共类内存

问候每个人。 我目前正在UNIX上编写C,C ++和fortran的多语言程序,不幸的是,当我在编译后尝试执行时遇到“分段错误”。 我已经将问题缩小到我程序的C ++和C部分之间的接口。 第一部分包括main.ccp和SA.cpp,以及第二部分CFE.c. 一个名为’SimAnneal’的类在SA.cpp中存在,具有公共向量DensityArray和ElementArray。 该计划的顺序如下: 创建SimAnneal对象’Obj1’并调用函数ObjFunction() 该函数初始化矢量大小 使用指向两个向量及其长度的指针调用CFE(…)。 CFE.c通过使用指针直接编辑向量的数据元素 ObjFunction()使用EnergyArray(和可能的DensityArray)数据。 所有来源的相关脚本如下: main.cpp中 #include “SA.h” int main() { SimAnneal Obj1; Obj1.ObjFunction(); return 0; } SA.h class SimAnneal { void Initialize (); … public std::vector DensityArray; std::vector EnergyArray; double ObjFunction (); … } SA.cpp #include “CFE.h” void SimAnneal::Initialize () { int length = 15; […]

int LA = {1,2,3,4,5}内存分配混乱c

我观察到为数组分配的内存似乎是动态的。 以下是我在本教程中找到的示例代码: #include main() { int LA[] = {1,3,5,7,8}; int item = 10, k = 3, n = 5; int i = 0, j = n; printf(“The original array elements are :\n”); for(i = 0; i= k){ LA[j+1] = LA[j]; j = j – 1; } LA[k] = item; printf(“The array elements after insertion :\n”); […]

HashTable中的内存分配问题

请不要关闭这个说一个重复的问题 。 我做了一个重要的改变,所以不要混淆别人,我重新提交了这个更清晰的代码。 请帮我解决这个内存分配问题。 我正在研究一个HashTable,这就是我的(仅限部分代码) main.c中 HashTablePtr hash; hash = createHashTable(10); insert(hash, “hello”); insert(hash, “world”); HashTable.c HashTablePtr createHashTable(unsigned int capacity){ HashTablePtr hash; hash = (HashTablePtr) malloc(sizeof(HashTablePtr)); hash->size = 0; hash->capacity = capacity; hash->list = (ListPtr *)calloc(capacity, sizeof(List)); /*NO MEMORY ALLOCATION HERE*/ return hash; List.h typedef struct list List; typedef struct list * ListPtr; struct list […]

如何访问计算机的RAM和ROM的所有字节?

我尝试了指针和引用(&)但是当我尝试获取信息时(我只是从内存中读取)计算机“发出哔哔声”并且程序终止。 将指针指定给字节(char *)时没问题。 但是当我读到那台电脑发出哔哔声时。 (x = * p;) Windows XP,1GB + 128 MB RAM。 我不知道我的eproom + eeproms。 我可以使用System()函数来使用OS命令来访问内存吗? 你认识一个人吗?

请解释这个结果。 printf(“%c”,“abcd”)

#include int main() { printf(“%c\n”, ‘abcd’); printf(“%p\n”, ‘abcd’); printf(“%c\n”, 0x61626364); printf(“%c\n”, 0x61626363); printf(“%c\n”, 0x61626365); return 0; } 我想问这一行:printf(“%c \ n”,’abcd’); 在这一行中,结果是“d”但是,我无法理解为什么’d’会出现。 我试着看看其他的回忆。 在这种情况下,我发现其他记忆都包含所有字母。 请解释一下为什么结果是’d’以及为什么其他记忆都有所有字母。 谢谢。

动态内存分配

我在为数组动态分配内存时遇到了麻烦。 我已经调试了几个小时,没有任何指针? 我发布了剩下的代码。 它应该简单地将交换第一行与第二行交换,第三行与第四行交换。 我得到了奇怪的结果,如: 输入字符串:hello 输入字符串:你好吗? 输入字符串:我很好,谢谢 输入字符串:再见 输入字符串:bai 输入字符串:xx ========================= 你好吗 !我很好谢谢 你好 !你好吗 再见 !白 我很好谢谢 !再见 白 !XX int count = 0; char *lines[MAX_LINES]; char *tmp[50]; printf(“Enter string: “); fgets(tmp, 50, stdin); lines[count] = (char *) malloc((strlen(tmp)+1) * sizeof(char)); strcpy(lines[count], tmp); while(strcmp(“xx\n”, lines[count])){ count++; printf(“Enter string: “); fgets(tmp, 50, stdin); lines[count] […]

释放分配给char *(由`malloc`分配)的int *是否会调用Undefined Behavior?

标题可能令人困惑。 假设str是malloc分配的指针。 类型为int* ptr被赋值给它并被释放,如下面的代码片段所示: char* str = malloc(64); int* ptr = str; free(ptr); 我试图编译上面的代码。 它只是发出警告: source_file.c: In function ‘main’: source_file.c:10:16: warning: initialization from incompatible pointer type int* ptr = str; ^ 上面的代码是否调用未定义的行为? 上面的代码片段是否释放了malloc为str分配的malloc ?

什么导致堆栈溢出?

您可能认为这是一个巧合,我的问题的主题类似于论坛的名称,但我实际上是通过谷歌搜索术语“堆栈溢出”。 我使用OPNET网络模拟器,我使用C进行编程。我认为我遇到了大数组大小的问题。 看来我正在达到某种内存分配限制。 它可能与OPNET,Windows,我的笔记本电脑内存或最有可能的C语言有关。 当我尝试使用具有数千个整数的元素总数的嵌套数组时,会导致该问题。 我认为我超出了整体内存分配限制,我想知道是否有办法增加这个上限。 这是确切的问题描述: 我基本上有一个路由表。 我们称之为routing_tbl [n],这意味着我支持30个节点(路由器)。 现在,对于此表中的每个节点,我保留信息。 大约有许多(数百个)可用路径,在一个名为paths [p]的数组中。 同样,对于此数组中的每个路径,我将属于它的节点列表保存在名为hops [h]的数组中。 所以,我至少使用了nph整数值的内存,但是这个表也包含其他信息。 在同一个函数中,我也使用另一个嵌套数组,它也消耗了近40,000个整数。 一旦我运行我的模拟,它就会退出抱怨堆栈溢出。 当我减少路由表的总大小时,它可以工作。 您认为导致问题的原因是什么?如何解决? 非常感谢阿里