标签: memory-management

没有在c语言中分配,访问内存空间是否有任何问题


#include<stio.h>
main()
{
  int *p,i;
  p = (int*)malloc(sizeof(int));
  printf("Enter:");
  scanf("%d",p);
  for(i=1;i<3;i++)
  {
   printf("Enter");
   scanf("%d",p+i);
  }

  for(i=0;i<3;i++)
  {
    printf("No:%d\n",*(p+i));
  }
  getch();
  return 0;
}

在这个C程序中,内存是在没有分配的情况下访问的.程序工作.如果没有分配就访问内存会出现什么问题?如果是,那么存储大小未提前知道的整数数据集合的解决方案是什么?

c memory-management

-3
推荐指数
1
解决办法
900
查看次数

iPhone应用程序的内存释放有多重要?

我是Objective C的初学者.我知道java编程,在介绍级别课程中,内存发布没有涵盖(我不知道是否有更高级的课程或java编译器处理这个).但是,即使在介绍级别,我也需要为Objective C程序手动释放内存.我知道这样做是个好习惯,但它有多重要?特别是如果我想开发iPhone应用程序,内存释放非常紧急(而不这样做会导致处理速度显着减慢)?通过iPhone应用程序,我不是在谈论具有梦幻般的视觉效果,高品质音效以及其他可能使记忆释放变得重要的3D游戏.我只是想开发一些小工具,如计算器,提醒或日记本.那么记忆释放有多重要?

我认为在过去,当C语言程序在可能没有太多内存和处理速度的超级旧计算机上运行时,内存释放很重要.但考虑到iPhone是一种非常先进的设备,手动内存释放有点过时吗?

memory iphone memory-management objective-c

-3
推荐指数
1
解决办法
192
查看次数

[mutableArray initWithArray:[str componentsSeparatedByString:@""]]编译是对的,但在运行时遇到错误

[mutableArray initWithArray: [str componentsSeparatedByString:@" "]];
Run Code Online (Sandbox Code Playgroud)

componentsSeparatedByString返回一个NSArray *,并initWithArray接受一个NSArray *.

但是,当我运行此代码时,会出现一些错误.有什么问题?

memory-management objective-c

-3
推荐指数
1
解决办法
109
查看次数

为什么在C++中需要析构函数?

为什么我们必须使用析构函数在c ++中取消分配内存,

我们可以使用

delete or delete[]   
Run Code Online (Sandbox Code Playgroud)

程序终止时释放程序使用的所有内存是不正确的.

c++ memory memory-management raii

-3
推荐指数
1
解决办法
339
查看次数

为什么这段代码不起作用?C++

我正在学习cpp并需要一些帮助.我的代码无效,它停止了add->value = value.

typedef struct node node;
struct node{
    int value;
    struct node *next;  
};

node *top; 

int insert(int value){
    struct node *add;
    cout<< "here it stops";
    add->value = value;
    add->next = NULL;

    if(top == NULL ){
        top == add;
    }else{
        add->next = top;
        top =  add;
    }  
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers memory-management

-3
推荐指数
1
解决办法
161
查看次数

为什么malloc在这里引起内存损坏?

我不断收到以下错误:

*** Error in `./vice': malloc(): memory corruption: 0x08e77530 ***
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

相关代码为:

open_result *
open_file_1_svc(open_args *argp, struct svc_req *rqstp)
{
    static open_result  result;
    int obtained_fd;
    int just_read;
    int total_read = 0;
    int max_bytes_read = 1024;
    char *ptr_file;
    char *pathName = "MyFiles/"; // strlen = 8
    int toReserve;

    xdr_free((xdrproc_t)xdr_open_result, (char *)&result);

    // Construct full name of the file (in "MyFiles")
    toReserve = strlen(argp->fname) + strlen(pathName) + 1; // "\0"
    char *fullName = malloc(toReserve*sizeof(char));
    fullName = strdup(pathName);
    fullName = strcat(fullName, …
Run Code Online (Sandbox Code Playgroud)

c malloc rpc memory-management memory-corruption

-3
推荐指数
1
解决办法
3847
查看次数

为什么不能在 C# 中设置“this”

我已经检查了链接“为什么我不能在 C# 中将“this”设置为一个值?我知道这this是只读的。换句话说,它(内容)不能分配给另一个新对象。我只是想知道 C# 中这种约束的哲学或考虑。如果是为了内存管理的安全性,C#使用垃圾收集器来确定一个对象以后的使用情况。

    public class TestClass
    {
        private int Number;
        public TestClass()
        {
            this.Number = 0;
        }
        public TestClass(TestClass NewTestClass)
        {
            this = NewTestClass;        //  CS1604  Cannot assign to 'this' because it is read-only
        }

    }
Run Code Online (Sandbox Code Playgroud)

这样一来,看来成员需要一一更新了。

    public class TestClass
    {
        private int Number;
        public TestClass()
        {
            this.Number = 0;
        }
        public TestClass(TestClass NewTestClass)
        {
            this = NewTestClass;        //  CS1604  Cannot assign to 'this' because it is read-only
        }

    }
Run Code Online (Sandbox Code Playgroud)

欢迎提出任何意见。

注意:为了澄清起见,C++ 部分已被删除。

c# memory-management

-3
推荐指数
1
解决办法
136
查看次数

为什么 GoLang 中的文件加载一开始需要很长时间?然后需要最少的时间?

goProgram 是一个简单的实用程序,它在文件中搜索给定的字符串并得出 true/false

当尝试使用 data.log 时,第一次花费了大约 160 毫秒,后来大约花费了 20 毫秒

I:\Study\GO> .\goProgram.exe I:\data.log "BUILD SUCCESS"
true
Execution time : 156.4336ms

I:\Study\GO> .\goProgram.exe I:\data.log "BUILD SUCCESS"
true
Execution time : 19.1512ms

I:\Study\GO> .\goProgram.exe I:\data.log "BUILD SUCCESS"
true
Execution time : 19.5516ms

I:\Study\GO> .\goProgram.exe I:\data.log "BUILD SUCCESS"
true
Execution time : 18.5528ms
Run Code Online (Sandbox Code Playgroud)

当尝试使用 data1.log 时,第一次花费了大约 180 毫秒,后来大约花费了 20 毫秒

I:\Study\GO> .\goProgram.exe I:\data1.log "BUILD SUCCESS"
true
Execution time : 178.5104ms

I:\Study\GO> .\goProgram.exe I:\data1.log "BUILD SUCCESS"
true
Execution time : 17.5497ms

I:\Study\GO> .\goProgram.exe I:\data1.log …
Run Code Online (Sandbox Code Playgroud)

caching memory-management file go

-3
推荐指数
1
解决办法
45
查看次数

指针(技巧):内存参考

关于C指针的技巧问题.请阅读下面的代码段并尝试解释列表值更改的原因(此问题基于代码):

tail具有列表的内存地址.

如何在下面更改可能的列表

typedef struct _node {
   struct _node *next;
   int value;
}Node;


 int main(){
   Node *list, *node, *tail;
   int i = 100;

   list = NULL;
   printf("\nFirst . LIST value = %d", list);

  tail =(Node *) &list;
  node = malloc (sizeof (Node));
  node->next = NULL;
  node->value = i;

  //tail in this point contains the memory address of list
  tail->next = node;
  printf("\nFinally. LIST value = %d", list);
  printf("\nLIST->value = %d", (list->value));

return 0; …
Run Code Online (Sandbox Code Playgroud)

c c++ pointers memory-management

-4
推荐指数
1
解决办法
1113
查看次数

GC是否正常工作?

可能重复:
.NET垃圾收集在这里不能正常工作?

我测试了以下代码.单击按钮时,将创建对象并将其添加到列表中.单击另一个按钮时,将清除该列表

GC正在销毁对象,但内存使用量不会减少.为什么?有什么不对?

public partial class MainWindow : Window
{
    public List<MyModel> MyList;
    public MainWindow()
    {
        MyList = new List<MyModel>();
        InitializeComponent();
    }

    private void button1_Click_1(object sender, RoutedEventArgs e)
    {
        MyList = new List<MyModel>();
        for (int i = 0; i < 1000000; i++)
        {
            MyList.Add(new MyModel { ID = i, Description = "Model Id : " + i.ToString() });
        }
        MessageBox.Show("Complate!");
    }

    private void button1_Click_2(object sender, RoutedEventArgs e)
    {
        MyList.Clear();
        MyList = null;
    }
}

public class MyModel
{
    ~MyModel() …
Run Code Online (Sandbox Code Playgroud)

.net c# garbage-collection memory-management

-4
推荐指数
1
解决办法
286
查看次数